这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 嵌入式开发» MCU» 关于新唐MS51FB9AE单片机的bootloader软件设计问题的讨论

共9条 1/1 1 跳转至

关于新唐MS51FB9AE单片机的bootloader软件设计问题的讨论

工程师
2021-01-27 09:32:42 打赏

今天突然想到了一个比较难的问题,首先 51开发都是和大部分工程师一样的配置,keil c

然后,在一个项目中,我需要一个变量在bootload程序中计算出来。这个变量存于 51的内部ram中,等bootload 运行结束,pc就跳到 app 里面进行运行。 图片如下:

image.png

可能有人反驳我。为什么这个变量一定要在 bootload 里面计算出来。在app里面不能计算吗? 这个没办法 ,为了满足项目的需求。 请满足这个变态的需求。。

有了 这个变态的需求,我把问题分解一下。 在 keil + c语言的环境中:

1. 如何 指定一个特定的内存地址 产生一个变量A

2. 如何让这个变量 A ,在定义的时候, 只是占个坑, 而不改变这个坑里面原有的内容?? 《==我说的比较直白


看看论坛里有没有 51的高手能指点一二?

备注: 不能添加外部 eeprom 进行转存。 这样这个题目就毫无意义了。 就利用mcu 内部的一些编程技巧 应该是可以的。 从汇编去考虑这个问题,反而是简单的。




关键词: MS51FB9AE bootloader 新唐

工程师
2021-01-27 21:52:25 打赏
2楼

定义变量的时候指定地址应该就行了吧! 或者用指针!


工程师
2021-01-27 22:23:14 打赏
3楼

指定地址,不要初始化


工程师
2021-01-27 22:29:03 打赏
4楼

在芯片尾部之类的地方画出一小部分RAM,在boot和app的工程里都不要包含这段地址,然后在boot和app里都通过指针访问这段地址,只要不断电,数据不会丢失!


工程师
2021-01-27 22:32:35 打赏
5楼
用 _at_ 指定地址。
启动代码(startup.a51)里面,不要去清零这个地址。



高工
2021-01-30 23:36:50 打赏
6楼

大家讲得都蛮好


工程师
2021-01-30 23:52:41 打赏
7楼

讨论起来还是可以的


工程师
2021-01-31 23:58:03 打赏
8楼

感谢分享


工程师
2021-02-01 23:49:13 打赏
9楼

大家的反响都挺好的


共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]