drivers目錄下,加上stm32f7板級(jí)的設(shè)備驅(qū)動(dòng),相當(dāng)于把上面提到的I2C抽象層所提供的接口一 一實(shí)例化。" />

哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

總結(jié)一些在LwIP移植的時(shí)候體會(huì)

lPCU_elecfans ? 來(lái)源:未知 ? 作者:李倩 ? 2018-06-08 09:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在LwIP移植的時(shí)候,一開(kāi)始遇到很多坑,在大家的幫助下都調(diào)通了,現(xiàn)在回頭看看,總結(jié)了一些體會(huì),和大家分享一下:

1. 對(duì)RT-Thread的體系結(jié)構(gòu)不熟悉,特別是設(shè)備驅(qū)動(dòng)層這塊,如果不理解,很可能會(huì)出現(xiàn)如下情況:

這是沒(méi)有添加I2C底層驅(qū)動(dòng)的原因。當(dāng)時(shí)的情況是這樣的,我在menuconfig配置環(huán)境中,Device Drivers子條目下,打開(kāi)了I2C的驅(qū)動(dòng),如下圖所示:

我單純的以為這樣就行了,還天真的想著RT-THread真貼心,啥都做好了,唉!Too young too simple! 這個(gè)只是做好了I2C設(shè)備(總線(xiàn))的抽象層(BUS層),供應(yīng)用層調(diào)用,跟linux的設(shè)備驅(qū)動(dòng)體系類(lèi)似,這樣做的好處在于能統(tǒng)一設(shè)備,管你是什么設(shè)備,萬(wàn)千接口,你在我這里就是一個(gè)總線(xiàn)接口,從而簡(jiǎn)化應(yīng)用層的邏輯處理。如下圖所示:

之前做了很多l(xiāng)inux驅(qū)動(dòng)開(kāi)發(fā),也了解到RT-Thread是類(lèi)linux的一種RTOS,也怪自己太直,忘記這點(diǎn)了,一直在這個(gè)錯(cuò)誤上面糾結(jié),鉆牛角尖了,最后看了一篇文檔才恍然大悟。解決辦法就是:在bsp->drivers目錄下,加上stm32f7板級(jí)的設(shè)備驅(qū)動(dòng),相當(dāng)于把上面提到的I2C抽象層所提供的接口一 一實(shí)例化。這樣的話(huà),應(yīng)用層就能和底層I2C通過(guò)抽象層達(dá)成一一映射對(duì)應(yīng)的關(guān)系。2. 犯了形而上學(xué)的錯(cuò)誤。出現(xiàn)上述錯(cuò)誤后,當(dāng)然要去問(wèn)群里的大神、老師了。當(dāng)時(shí),黃老師說(shuō)讓我用pin設(shè)備類(lèi)的驅(qū)動(dòng),改了一定的代碼,我照做了,也沒(méi)看原理圖,想著老師說(shuō)的都是對(duì)的,結(jié)果我錯(cuò)了。事實(shí)上,作為工程師,必須要謹(jǐn)慎細(xì)致,要去看原理圖,理解原理。唉,急功近利,形而上學(xué),片面的看待問(wèn)題理解問(wèn)題。

黃老師,反復(fù)提到一個(gè)pin,117. 比如rt_pin_write(117,1); 這是F407獨(dú)有的ETH_RESET引腳,我想著都是原子家的娃,這點(diǎn)還用細(xì)分嗎?767必須也是呀! 汗!不說(shuō)這點(diǎn)了,羞愧!

事實(shí)上,767不能用pin設(shè)備復(fù)位PCF8574的,必須用I2C設(shè)備進(jìn)行驅(qū)動(dòng),原因就是硬件決定的!

馬爺爺,毛爺爺?shù)霓q證法,矛盾論教導(dǎo)我們,切莫教條主義,靜止孤立片面的看待問(wèn)題,這次感同身受。

上面算是一些經(jīng)驗(yàn)和教訓(xùn)總結(jié),下面上硬菜。

1. 下載rt-thread-3.0.3源碼,解壓之,刪除bsp文件夾內(nèi)所有子文件夾(干凈,看著舒服,不做亦可),到GitHub上面下載stm32f7-disco最新的板級(jí)支持包。3.0.3內(nèi)的F7包非常老,沒(méi)有767的芯片支持,同時(shí),驅(qū)動(dòng)特性支持的也不好,總之,如果用767的話(huà),這步雖然非必需,但是對(duì)后續(xù)的移植卻非常有益。然后,把這個(gè)文件夾命名為stm32f767-apollo(非必需,裝逼要緊)

2.將bsp內(nèi)stm32f429-apollo文件內(nèi)drivers目錄下的drv_eth.c/hdrv_i2c.c/h drv_pcf8574.c/h 這6個(gè)文件拷貝到stm32f767-apollo相應(yīng)目錄下。(cao! 步驟1中與此步驟有邏輯沖突,各位原諒我)3.現(xiàn)在開(kāi)始修改各種配置吧,先用ENV工具menuconfig以下,注意看此時(shí)的配置圖

下面我們就裝逼到底,讓這個(gè)配置圖變?yōu)镾TM32F767IGTx的專(zhuān)屬。進(jìn)入頂層目錄(進(jìn)入stm32f767-apollo文件夾內(nèi),以下均稱(chēng)“頂層目錄”),打開(kāi)Kconfig頂層kernel-config文件。 加上如下代碼

保存退出,我們?cè)賛enuconfig一下看下效果。

吊不吊先不說(shuō)了,就說(shuō)裝逼足夠了吧,哈哈! 4.雖然很好看,但是步驟3目前來(lái)說(shuō)還是沒(méi)有什么卵用,萬(wàn)里長(zhǎng)征才剛剛開(kāi)始。在頂層目錄下,打開(kāi)template.uvprojx文件(沒(méi)錯(cuò),您要是不瞎搞,這個(gè)文件目測(cè)應(yīng)該在最下面),用keil打開(kāi)之后,修改為對(duì)應(yīng)的STM32F767IGx芯片,如下圖所示。這樣,再用命令生成工程時(shí),默認(rèn)的就是767IGT,不用每次都重新修改了。

5.進(jìn)入Libraries子目錄,打開(kāi)SConscript文件,做如下修改:

這樣的話(huà),生產(chǎn)工程時(shí),會(huì)自動(dòng)加載767的啟動(dòng)文件,并且在keil的C/C++預(yù)定義框中會(huì)自動(dòng)定義STM32F767xx如下圖所示:

6.進(jìn)入drivers子目錄下,打開(kāi)SConscript文件,這里說(shuō)一下,3.0.3內(nèi)的SConscript文件可以直接把該文件夾下所有源碼加入工程,而這個(gè)最新的得自己加進(jìn)去。修改如下:

把之前加入的文件名字添加進(jìn)去。別急,還有一步,打開(kāi)drv_iic.h文件, 把包含的頭文件修改一下,你自己一看就懂了(算了,寫(xiě)一下 #include "stm32f7xx_hal.h")7.看到這里,我可以負(fù)責(zé)任的告訴你,BSP已經(jīng)準(zhǔn)備好了!?。∥覀冮_(kāi)始LwIP的移植吧,這一步驟先高興下,喝杯茶,45°角仰望天空,像某位梳著大背頭的偉人一樣,吐口煙圈。8.到頂層目錄,打開(kāi)ENV工具,menuconfig 關(guān)掉Using SDRAM,然后進(jìn)入RT-Thread Components子條目,在Device Drivers目錄下,打開(kāi)I2C驅(qū)動(dòng);

回到上層,如果設(shè)備虛擬文件系統(tǒng)打開(kāi)了的話(huà),關(guān)掉吧,用不上的。進(jìn)入Network stack子條目,再進(jìn)入LWIP子條目,選擇LWIP的版本為2.0.2如果有路由器,現(xiàn)在就可以了,如果沒(méi)有,需要配置靜態(tài)IPv4地址。如圖所示:

9.到RT-Thread online packages子條目下,選擇IOT - internet if things 子條目下,打開(kāi)ping工具,如下圖所示:

10.至此,所有配置完成,保存退出menuconfig,此時(shí)ENV開(kāi)始自動(dòng)下載ping工具包,使用pkgs --update更新包,完成后,使用 scons --target=mdk5 -s 命令生成工程。至此移植完成11.打開(kāi)工程,直接編譯,下載進(jìn)開(kāi)發(fā)板,打開(kāi)串口助手,看好戲吧。對(duì)了,在開(kāi)發(fā)板ping電腦的時(shí)候,要關(guān)閉電腦防火墻,不然ping不同。下圖是成功現(xiàn)象:

寫(xiě)在最后,這個(gè)帖子斷斷續(xù)續(xù)寫(xiě)了一天,很累,但是分享很開(kāi)心。衷心希望大家多多斧正!

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11812

    瀏覽量

    219519
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1562

    瀏覽量

    131717
  • LwIP
    +關(guān)注

    關(guān)注

    2

    文章

    91

    瀏覽量

    29754

原文標(biāo)題:【周四RTOS專(zhuān)欄】基于正點(diǎn)原子F767的RT-Thread LwIP移植

文章出處:【微信號(hào):elecfans,微信公眾號(hào):電子發(fā)燒友網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何使用 powerquad 加速器中的一些功能以及 CMSIS 原始實(shí)現(xiàn)中的一些功能?

    )。 如何使用 powerquad 加速器中的一些功能以及 CMSIS 原始實(shí)現(xiàn)中的一些功能。 Example: I do not want to call arm_mat_trans_q15 powerquad
    發(fā)表于 04-03 06:37

    極海APM32F427 MCURT-Thread系統(tǒng)上使用LwIP網(wǎng)絡(luò)功能

    下面是基于RT-Thread的ENV命令行開(kāi)發(fā)環(huán)境,APM32F427上使用LwIP網(wǎng)絡(luò)協(xié)議棧實(shí)現(xiàn)網(wǎng)絡(luò)通信功能的。
    的頭像 發(fā)表于 04-02 15:19 ?8516次閱讀
    極海APM32F427 MCU<b class='flag-5'>在</b>RT-Thread系統(tǒng)上使用<b class='flag-5'>LwIP</b>網(wǎng)絡(luò)功能

    爬壁機(jī)器人磁鐵的一些常見(jiàn)問(wèn)題

    爬壁機(jī)器人近幾年比較火,它是類(lèi)能夠垂直墻面、天花板、傾斜表面上移動(dòng)和作業(yè)的特種機(jī)器人,今天我們不聊其它,只聊下關(guān)于磁吸附應(yīng)用中的磁鐵,以下是小編整理的關(guān)于爬壁機(jī)器人中磁鐵的一些常見(jiàn)問(wèn)題。
    的頭像 發(fā)表于 01-09 10:06 ?417次閱讀
    爬壁機(jī)器人磁鐵的<b class='flag-5'>一些</b>常見(jiàn)問(wèn)題

    并聯(lián)使用MOS存在一些問(wèn)題,要怎樣做才能避免這些問(wèn)題?

    并聯(lián)使用MOS存在一些問(wèn)題,那我們要怎樣做才能避免這些問(wèn)題? 首先,器件的致性定要好。 功率MOSFET多管并聯(lián)時(shí),器件內(nèi)部參數(shù)的微
    發(fā)表于 12-10 08:19

    如果將蜂鳥(niǎo)的risc-v移植到其他的fpga中想實(shí)現(xiàn)一些外設(shè)功能有什么辦法?可以不用操作系統(tǒng)直接添加verilog代碼嗎?

    請(qǐng)問(wèn)如果將蜂鳥(niǎo)的risc-v移植到其他的fpga中想實(shí)現(xiàn)一些外設(shè)功能有什么辦法?可以不用操作系統(tǒng)直接添加verilog代碼嗎?
    發(fā)表于 11-10 06:35

    蜂鳥(niǎo)E203的浮點(diǎn)指令集F的一些實(shí)現(xiàn)細(xì)節(jié)

    周期。 總結(jié) 本文介紹的內(nèi)容是為了完成基礎(chǔ)功能:對(duì)蜂鳥(niǎo)E203 RISC-V內(nèi)核的微架構(gòu)實(shí)現(xiàn)進(jìn)行定優(yōu)化,添加F拓展的過(guò)程中的一些記錄。
    發(fā)表于 10-24 08:57

    Ubuntu20.04系統(tǒng)中訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型的一些經(jīng)驗(yàn)

    本帖欲分享Ubuntu20.04系統(tǒng)中訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型的一些經(jīng)驗(yàn)。我們采用jupyter notebook作為開(kāi)發(fā)IDE,以TensorFlow2為訓(xùn)練框架,目標(biāo)是訓(xùn)練個(gè)手寫(xiě)數(shù)字識(shí)別的神經(jīng)網(wǎng)絡(luò)
    發(fā)表于 10-22 07:03

    移植時(shí)候發(fā)現(xiàn)卡死,為什么?

    請(qǐng)教大佬,我是按照網(wǎng)上的教程來(lái)移植的,板子是野火的霸天虎,但是到最后驗(yàn)證的時(shí)候出問(wèn)題了,發(fā)現(xiàn)board.c文件中的代碼可以運(yùn)行,但就是運(yùn)行不到主函數(shù),而是卡死以下兩個(gè)函數(shù)中 以下是我的主函數(shù)和board.c文件
    發(fā)表于 09-29 06:28

    TriCore移植RTT的時(shí)候遇到了debug現(xiàn)象正常,為什么?

    TC377上移植RTT,驗(yàn)證的時(shí)候發(fā)現(xiàn)正常燒錄沒(méi)有用,但debug的時(shí)候功能正常。懷疑是初始化或者中斷問(wèn)題,但能力有限實(shí)在查不出來(lái)原因
    發(fā)表于 09-10 06:51

    用STM32的時(shí)候是直接用MDK方便還是vscode用keil插件方便一些?

    用STM32的時(shí)候是直接用MDK方便還是vscode用keil插件方便一些
    發(fā)表于 08-12 08:02

    請(qǐng)問(wèn)工程移植都有哪些需要注意的地方?

    ST的固件庫(kù)還是挺豐富的,有時(shí)候我們直接移植工程還是挺方便的,不過(guò)總是會(huì)有各種各樣的報(bào)錯(cuò)存在,移植時(shí)候有哪些需要注意的嗎?或者
    發(fā)表于 07-11 06:50

    關(guān)于芯片設(shè)計(jì)的一些基本知識(shí)

    芯片的設(shè)計(jì)理念眾所周知,芯片擁有極為復(fù)雜的結(jié)構(gòu)。以英偉達(dá)的B200芯片為例,巴掌大的面積上,塞入了2080億個(gè)晶體管。里面的布局,堪稱(chēng)個(gè)異次元空間級(jí)的迷宮。英偉達(dá)B200芯片如此復(fù)雜的架構(gòu)
    的頭像 發(fā)表于 06-11 12:16 ?1498次閱讀
    關(guān)于芯片設(shè)計(jì)的<b class='flag-5'>一些</b>基本知識(shí)

    基于STM32 HAL庫(kù)與標(biāo)準(zhǔn)庫(kù)的ESP8266接入機(jī)智云方案(

    新手。實(shí)際的開(kāi)發(fā)和移植過(guò)程中,還是會(huì)遇到不少問(wèn)題,當(dāng)前機(jī)智云平臺(tái)自動(dòng)生成的代碼與網(wǎng)上的一些舊的教程有差異。現(xiàn)在,我將自己成功的開(kāi)發(fā)經(jīng)驗(yàn)總結(jié)出來(lái),手把手教大家如何進(jìn)
    的頭像 發(fā)表于 05-28 18:02 ?1327次閱讀
    基于STM32 HAL庫(kù)與標(biāo)準(zhǔn)庫(kù)的ESP8266接入機(jī)智云方案(<b class='flag-5'>一</b>)

    Debian和Ubuntu哪個(gè)好一些?

    兼容性對(duì)比Debian和Ubuntu哪個(gè)好一些,并為您揭示如何通過(guò)RAKsmart服務(wù)器釋放Linux系統(tǒng)的最大潛能。
    的頭像 發(fā)表于 05-07 10:58 ?1408次閱讀

    FX2LP USB上配置GPIF中斷時(shí)遇到一些問(wèn)題,求解決

    你好,我 FX2LP USB 上配置 GPIF 中斷時(shí)遇到一些問(wèn)題。 我啟用了 INT4 中斷并從 GPIF 中選擇了源 INT4,然后啟用了 GPIF 完成中斷,但我看不到中斷 4 工作。 我該如何做呢?
    發(fā)表于 05-06 08:00
    城步| 彩票| 承德市| 鸡东县| 鄂托克旗| 邯郸县| 清远市| 雷波县| 西平县| 榆林市| 龙川县| 连江县| 武安市| 六枝特区| 察哈| 平罗县| 西吉县| 罗山县| 二连浩特市| 连云港市| 宽甸| 深圳市| 松原市| 建水县| 鸡东县| 桑日县| 邵东县| 东城区| 博白县| 中超| 滕州市| 霸州市| 赣州市| 弥勒县| 承德市| 文登市| 绥江县| 如皋市| 茂名市| 乌兰县| 石景山区|