📄 讨论.txt
字号:
注意:下载的工程好像不能直接Make通过,需要自己建一个工程,加入源文件,设置工程属性,呵呵否则看不到axf和bin文件
对RO 和RW,我觉得贴主的认识有点偏颇,RO让连接器知道运行程序的下载点,RW让连接器知道变量分配的地址起始点,对于不用实时操作系统的一些应用,其实也不需要REMAP内存映射,简单的问题不要复杂化了。对UC/OS和uClinux需要搬动程序,当然要REMAP了,贴主的分析大概适合这种情况。
补充:我在写程序时是这样处理的:RW设置成我程序搬动后RAM的起始地址,在init.s中搬动程序,这个时候C语言中的变量还未使用,C中的全局变量在进入MAIN后中调用一个初始化函数就可以了。
其实RW不设置,就是跟在RO后面,程序运行也不会有问题,就是不能改变量!
S3C4510没有MMU,那么在地址映射保护方面肯定受到影响,但是,不采用MMU地址映射保护机制不等于就没有内存管理,内存管理总是存在的,只是方式不同罢了,例如代码段、数据段、堆栈段空间的分配和内存空间的动态分配等等,所以,有时我们只好求助于操作系统了, 其实uClinux仍然采用存储器分页管理,只是对实际存储器进行分页。其采用的内存管理是采用实存储器管理策略,不过这一点实在是一种迫不得已的倒退,没有办法,芯片没有MMU!!还好,uCLinux总是在各个方面为这个“缺点”而弥补......
因为是嵌入式系统开发,所以大家都可以理解。
说的不错,ARM7TDMI没有MMU,也没有MPU,所以更类似一个高档单片机,那么8位机上的很多经验还是适用的;再就是借助于Uclinux或Ucos等操作系统来管理内存了。自己的程序也需小心处理指针、堆栈溢出、内存泄漏等比较敏感的地方。
但要做复杂的开发,确实要认真考虑选型问题。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -