作者MasterChang (我爱ASM)
看板ASM
标题Re: [问题] 请问8051是块板子吧?
时间Fri Nov 14 13:51:00 2008
※ 引述《shuiyuan (C遇瓶颈)》之铭言:
: → eva19452002:可以直接拿8051的C拿去ARM执行吗? 应该不行不是吗? 11/13 08:53
: → eva19452002:结论是不同平台的C还是要做相当程度的修改才行 11/13 08:53
一般嵌入式系统上的开发,会把程式码分成几部份。
1.Kernel core ---> 硬体初始化...
2.Board Description Package ---> 硬体脚位、周边控制介面...定义
3.Hardware API ---> 存取周边时需要用到的程式介面
4.User Application ---> 跟硬体无关的程式。
不同的平台,能直接去用的只有(4)的程式可以,其他的都要作porting的工作。
比如arm上面有放网路介面,而8051没有,了不起存取网路介面的部份不会动。
或是call api时告诉你无此装置。基本上是可以100%移植。
建立(1)~(3)的部份的好处时,在同一平台开发时,几乎不用重新key in,直
接连结进来,改一改Boaed Descript。现在的IDE都是以专案方式管理,这样
可以加快开发速度。
我自己玩单晶片超过10年了,几乎就是(1)~(3)的部份连结进来,然後在header
file改一下mcu参数就直接写user code了。不同晶片,就是(1)~(3)的部份第
一次把他建好就可以了,顶多就是不足的部份逐次修订。
1F:推 AJE:资料大小也要注意 keil C的int是16bit 不是32bit 11/14 15:26
这种问题算是老问题了,基本上这类的定义可以放在(1)~(3)来面处理。
重新定义资料型态宽度,确保正确的宽度被使用。
比如int可以用int16定义,char用int8定义,有些uC是32位元的,那可以
透过marco去重定义int为int32这类。
像pic和pic32的int就不一样。我的user application在两者间移植就是这样作。
2F:推 ruemann:实用 11/14 18:42
※ 编辑: MasterChang 来自: 59.104.147.111 (11/14 21:58)
3F:→ eva19452002:感谢回答 11/15 09:25