→ Lipraxde: 沒仔細看,不過你文件是 v6,compiler 似乎是 v5 的? 01/20 01:00
推 breeze08: 你這看起來像是stm32?一般來說是不應該改startup檔才對 01/20 01:37
→ breeze08: 對,因為這都是固定流程,其中包括了進行C語言的runtim 01/20 01:38
→ breeze08: e初始化,如果任意更改可能導致啟動行為不正確。如果真 01/20 01:39
→ breeze08: 的要更改的話首先你要確定你想改的是哪個地方,因此理 01/20 01:41
→ breeze08: 解硬體上電後的動作是必要的,一般來說上電後會從vecto 01/20 01:42
→ breeze08: r table中取出Reset handler地址來執行,假如你想更改 01/20 01:43
推 breeze08: 的是執行你的程式,那你應該直接更改reset handler的內 01/20 01:50
→ breeze08: 容而非去調整reset handler的地址 01/20 01:51
→ breeze08: 那假如你現在是要啟動後要跳去指定的地址執行放置在特 01/20 01:53
推 breeze08: 定地址的程式碼,也就是要直接設定Reset handler本身所 01/20 01:58
→ breeze08: 在地址的話,那你要更改的應該是linker script的內容 01/20 01:59
→ breeze08: 你提到的.org指令我沒用過,但其目的應該跟更改linker 01/20 02:02
→ breeze08: script是類似的 01/20 02:02
→ descent: 如果你的 arm 是 stm32/cortex-m, 可以參考 01/20 08:59
→ student23489: 原來這是V6的compiler!沒注意到這一點,謝謝提醒! 01/20 22:39
→ student23489: 這顆是公司拿中國那邊開的來給我,不是stm32,但底 01/20 22:40
→ student23489: 是cortex-M0的架構,查了stm32,開機程式真的超像的 01/20 22:41
→ student23489: 是否ARM的startup都差不多這樣? 01/20 22:41
→ student23489: 會選擇在Reset handler這邊側是改地址是因為我習慣 01/20 22:42
→ student23489: 先跑keil的simulator,看他R0這些暫存器行為跟值 01/20 22:42
→ student23489: 但常常simulator跑完就直接上機,卻忽略了改這些可 01/20 22:43
→ student23489: 能會導致啟動問題,感謝breeze大的說明 01/20 22:44
→ student23489: 也感謝descent大,參考網址內資料後,也讓我找到C可 01/20 22:44
→ student23489: 以直接用__attribute__((section(.arm.at addres))) 01/20 22:45
→ student23489: 來定址 01/20 22:45
→ descent: 不是, arm 有不同系列,startup 都存在一些差異。 01/20 23:23
推 easypro: 大概是仿stm32的mcu吧。如果是仿的就會很像 主要是記憶 01/23 19:21
→ easypro: 體起始位置會有差異 01/23 19:21
推 sorcerer1973: 偽指令?不就給編譯器看的,別學好了。 04/21 16:50