玩轉(zhuǎn) ESP32 + Arduino (二) ESP32及arduino理論知識

arduino基礎(chǔ)知識請見:
①: https://blog.csdn.net/dpjcn1990/article/details/92831300
②: https://blog.csdn.net/dpjcn1990/article/details/92831334
③: https://blog.csdn.net/dpjcn1990/article/details/92831364


ESP32及arduino理論知識

一、ESP32,是如何運(yùn)行RTOS的刹缝?

參考文檔 general-notes.rst

1哲银、 第一階段bootloader(ROM中)加載第二階段bootloader(位于FLASH 0X1000)

2童太、 第二階段的boot loader加載分區(qū)表和MAIN APP應(yīng)用程序(其實(shí)就是freertos了)

main APP包含RAM段和Flash段

① 去0X8000加載分區(qū)表 鄙才,配置兩個(gè)CPU(PRO CPU和APP CPU)的MMU庵朝,但只使能PRO cpu的flash阱洪,一旦被加載芬迄,就會跳到main APP的入口

3问顷、執(zhí)行main APP,此時(shí)禀梳,第二個(gè)CPU和RTOS調(diào)度器都會運(yùn)行

入口調(diào)用 componments/esp32/cpu_start.c中的call_start_cpu0函數(shù)杜窄,

此函數(shù)會調(diào)用 call_start_cpu1.執(zhí)行后PRO CPU執(zhí)行start_cpu0,APP CPU執(zhí)行start_cpu1

最終會調(diào)用app_main函數(shù)

二算途、內(nèi)存分布

內(nèi)存分為:

1塞耕、IRAM:

Internal SRAM0

ISR。Handlers 中斷處理函數(shù)必須放到IRAM里 (方法:通過家IRAM——ATTR屬性就能把代碼或變量放入IRAM里)

一些時(shí)序比較高的也應(yīng)該放入IRAM里

2嘴瓤、IROM:

3扫外、DRAM:

4、DROM:

三纱注、啟動流程

1畏浆、地址映射

①、首先在0XE000下載了:bootapp0

②狞贱、其次在0X1000下載了:bootloader

等待下載完成刻获,后繼續(xù)進(jìn)程如下:

③、在0X10000下載了:應(yīng)用程序(RTOS)

④瞎嬉、在0X8000下載了:分區(qū)表 default

這個(gè)文件是由default.csv表格生成的蝎毡,打開表格可以發(fā)現(xiàn)分區(qū)和地址的關(guān)系。

知道了分區(qū)表其實(shí)我們也可以借助別的工具下載程序了氧枣,例如

四沐兵、setup()和loop()函數(shù)

首先,我們要知道系統(tǒng)會默認(rèn)編譯cores文件夾下的內(nèi)容(相當(dāng)于系統(tǒng)自帶的庫函數(shù))

其次便监,我們要知道 PRO CPU在運(yùn)行應(yīng)用程序之前先運(yùn)行了app_main函數(shù)扎谎,

其實(shí)這個(gè)函數(shù)就在cores文件夾下的main.cpp里面

再次,我們要知道烧董,除了cores和librarise下的文件毁靶,其他文件都被放入.a庫文件中 lib庫中

有了以上知識后,我們看程序可以知道

app_main()調(diào)用了loopTask

loopTask會先調(diào)用setup函數(shù)逊移,再調(diào)用loop函數(shù)

loop函數(shù)會一直死循環(huán)预吆,所以我們可以在setup里創(chuàng)建任務(wù),

五胳泉、如何在第二個(gè)核上創(chuàng)建任務(wù)

使用xTaskCreatePinnedToCore(loopTask, "loopTask", 8192, NULL, 1, NULL, ARDUINO_RUNNING_CORE);

最后一個(gè)參數(shù)里 傳0代表第一個(gè)核拐叉,1代表第二個(gè)核


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末岩遗,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子凤瘦,更是在濱河造成了極大的恐慌宿礁,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件廷粒,死亡現(xiàn)場離奇詭異窘拯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)坝茎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門涤姊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嗤放,你說我怎么就攤上這事思喊。” “怎么了次酌?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵恨课,是天一觀的道長。 經(jīng)常有香客問我岳服,道長剂公,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任吊宋,我火速辦了婚禮纲辽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘璃搜。我一直安慰自己拖吼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布这吻。 她就那樣靜靜地躺著吊档,像睡著了一般。 火紅的嫁衣襯著肌膚如雪唾糯。 梳的紋絲不亂的頭發(fā)上怠硼,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天,我揣著相機(jī)與錄音移怯,去河邊找鬼拒名。 笑死,一個(gè)胖子當(dāng)著我的面吹牛芋酌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播雁佳,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼脐帝,長吁一口氣:“原來是場噩夢啊……” “哼同云!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起堵腹,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤炸站,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后疚顷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旱易,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年腿堤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了阀坏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,673評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡笆檀,死狀恐怖忌堂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情酗洒,我是刑警寧澤士修,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站樱衷,受9級特大地震影響棋嘲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜矩桂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一沸移、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耍鬓,春花似錦阔籽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至涣达,卻和暖如春在辆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背度苔。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工匆篓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寇窑。 一個(gè)月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓鸦概,卻偏偏與公主長得像,于是被迫代替她去往敵國和親甩骏。 傳聞我的和親對象是個(gè)殘疾皇子窗市,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評論 2 349