Re: [問題] 請問8051是塊板子吧?

看板ASM (組合語言)作者 (我愛ASM)時間16年前 (2008/11/14 13:51), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串3/3 (看更多)
※ 引述《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)的部份第 一次把他建好就可以了,頂多就是不足的部份逐次修訂。

11/14 15:26, , 1F
資料大小也要注意 keil C的int是16bit 不是32bit
11/14 15:26, 1F
這種問題算是老問題了,基本上這類的定義可以放在(1)~(3)來面處理。 重新定義資料型態寬度,確保正確的寬度被使用。 比如int可以用int16定義,char用int8定義,有些uC是32位元的,那可以 透過marco去重定義int為int32這類。 像pic和pic32的int就不一樣。我的user application在兩者間移植就是這樣作。

11/14 18:42, , 2F
實用
11/14 18:42, 2F
※ 編輯: MasterChang 來自: 59.104.147.111 (11/14 21:58)

11/15 09:25, , 3F
感謝回答
11/15 09:25, 3F
文章代碼(AID): #197H77rI (ASM)
文章代碼(AID): #197H77rI (ASM)