久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12198|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

MCU在運(yùn)行到main()之前都干了什么

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:51024 發(fā)表于 2014-8-10 22:15 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
 很多ARM工程師想當(dāng)然的以為,自己開發(fā)的應(yīng)用程序,用AK100Pro仿真器下載進(jìn)入調(diào)試,MCU的PC指針必定停留在main()函數(shù)的入口。但實(shí)際上,在運(yùn)行到main()前,MCU還做了很多事情。這里以一個LPC1700的Keil工程為例說明。

  MCU上電復(fù)位后,通常會從一個固定的地址開始啟動,比如ARM7復(fù)位后的入口地址為0x00000000;或者類似Cortex-M內(nèi)核從中斷向量表中取出入口地址,中斷向量表的地址必須是固定的。

  LPC1700為Cortex-M3內(nèi)核,所以啟動時會從中斷向量表(地址0x00000000)處取出入口地址和堆棧指針,分別加載到PC和SP中。

  入口地址處通常放的是芯片相關(guān)的啟動代碼。這部分代碼要完成很多芯片初始化的動作,由于與特定型號芯片相關(guān),所以不能隨隨便便地就用到別的型號芯片上。通常我們會使用官方提供的例程,然后以此為基礎(chǔ)進(jìn)行必要的修改。以下是LPC1700的初始化代碼,所有硬件相關(guān)的初始化操作放在了SystemInit()函數(shù)中。


    SystemInit()完成的功能可以有:設(shè)置看門狗、外部存儲器接口、內(nèi)核時鐘等等。當(dāng)然,這些代碼有些是可以放到后面的main()函數(shù)中完成,但有些則必須放在運(yùn)行到__main之前完成。

  芯片初始化完成后,接下來是執(zhí)行C運(yùn)行環(huán)境的初始化。C環(huán)境的初始化主要包含兩點(diǎn):

  按照分散加載文件的配置,將相應(yīng)的數(shù)據(jù)段和代碼段拷貝到相關(guān)位置,將ZI段清零。通過這個功能可以將C代碼中未指定初始化值的全局變量和靜態(tài)變量對應(yīng)的內(nèi)存清零,然后將指定初始化的全局變量和靜態(tài)變量對應(yīng)的內(nèi)存初始化。另外,如果有通過分散加載文件設(shè)置代碼存儲在Flash中,然后自動搬運(yùn)到RAM中運(yùn)行(該功能將在后續(xù)文章中細(xì)講),也會在該階段完成這個自動搬運(yùn)工作。

  之后是初始化C庫,完成后才跳轉(zhuǎn)到main()。

  以下是LPC1700工程的一段初始化代碼,不同的工程配置,反匯編出來的結(jié)果略有不同。






  所以說,在main()運(yùn)行前,MCU其實(shí)已經(jīng)做了很多工作了。如果程序下載沒有出現(xiàn)問題,但是就是跑不到main(),有可能不是仿真器的問題。是否會是main()之前的初始化操作異常?

-------------------------------

后面繼續(xù)分享這種小的技術(shù)總結(jié)。如有不對,歡迎拍磚。

評分

參與人數(shù) 1黑幣 +5 收起 理由
zhangli019 + 5 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:100713 發(fā)表于 2015-12-29 14:23 | 只看該作者
感謝感謝感謝感謝
回復(fù)

使用道具 舉報(bào)

板凳
ID:136037 發(fā)表于 2016-8-5 10:34 | 只看該作者
樓主寫的好,我來幫你消滅孤單的回復(fù)。
回復(fù)

使用道具 舉報(bào)

地板
ID:137764 發(fā)表于 2016-8-28 18:44 | 只看該作者
后面繼續(xù)分享這種小的技術(shù)總結(jié)
回復(fù)

使用道具 舉報(bào)

5#
ID:164507 發(fā)表于 2017-2-13 20:57 | 只看該作者
單片機(jī)根據(jù)啟動模式以及BOOT的管腳電平進(jìn)入每部固化好的程序
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲区视频 | 久久lu| 免费黄色录像片 | 国产欧美在线 | 日韩三级 | 欧美综合一区二区三区 | 欧美精品一区二区三区在线播放 | 色爽女| 黄色国产在线播放 | 欧美一a | 久久久久久久久久毛片 | 亚洲在线 | 不用播放器看的av | 懂色av色香蕉一区二区蜜桃 | 欧美成人高清 | 久久久久久国产精品 | 日本中文字幕一区 | 91在线一区二区 | 懂色中文一区二区在线播放 | 99福利| 亚洲日本激情 | 国产午夜精品一区二区三区四区 | www.久久久久久久久久久久 | 中文字幕色站 | 免费精品在线视频 | 99精品电影| 国产精品一区在线 | 久久国产一区二区 | www.日本国产| 男女免费观看在线爽爽爽视频 | 久草热线 | 狠狠操婷婷| 精品视频在线播放 | 日韩欧美在线观看视频 | 日韩免费av一区二区 | 911影院| 国产精品美女www爽爽爽 | 天天操天天玩 | 在线观看亚洲专区 | 日韩三| 91在线免费观看网站 |