此帖出自综合技术交流论坛
最新回复
似乎不少筒子比较专注从语法找毛病,其实语法应该是对的,这只是嵌入式的特殊性问题,在不同环境下没准情况都不一样。假如程序放在有OS的PC上执行,过程是
1、把代码从磁盘拷贝到RAM
2、执行代码
那么不会有问题,因为反正所有代码都在RAM里,没有一部分数据可读写,另一部分只可读不可写之分。(系统保护另当别论。)
但在不带OS的嵌入式系统里,程序往往在只读存储器(EPROM、Flash ROM等)里被直接执行,于是对存放于这个区域里的数据存取就有了限制,因硬件不支持写操作,软件执行写也白写,所以编译器为方便使用,减少编程错误起见,定义了一些只读区域,如果程序里有对该区域进行写操作时就报错。
以前做过几个H8和SH程序,它的编译环境默认有以下4个区: P:程序指令码区 C:常数数据区 B:已初始化数据区 D:未初始化数据区 链接默认P、C在ROM里,B、D在RAM里,程序对P、C区自然是不能写的。不过区域位置设置可以任意改,也可另加区域名,当然改错了自己负责。有人说嵌入式难,难在没OS帮忙什么都得自己打理;也有人说嵌入式灵活,灵活在没了OS限制,程序员想咋做都行,只要充分理解了系统。
详情
回复
发表于 2011-9-2 10:46
| ||
个人签名QQ:1625345502
|
||
| |
|
|
| |
|
|
此帖出自综合技术交流论坛
| ||
|
||
| |
|
|
| |
|
|
| |
|
|
此帖出自综合技术交流论坛
| ||
|
||
| |
|
|
此帖出自综合技术交流论坛
| ||
|
||
| |
|
|
| |
|
|
此帖出自综合技术交流论坛
| ||
|
||
此帖出自综合技术交流论坛
| ||
|
||
| |
|
|
| |
|
|
| |
|
|
此帖出自综合技术交流论坛
| ||
|
||
回复 楼主 wanghongyang 的帖子
此帖出自综合技术交流论坛
| ||
|
||
| |
|
|
曾经的版主且威望大于2000,或对EEWORLD论坛有突出贡献的坛友
EEWorld Datasheet 技术支持