drivers目錄下,加上stm32f7板級的設備驅動,相當于把上面提到的I2C抽象層所提供的接口一 一實例化。" />

国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

總結一些在LwIP移植的時候體會

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

掃碼添加小助手

加入工程師交流群

在LwIP移植的時候,一開始遇到很多坑,在大家的幫助下都調通了,現在回頭看看,總結了一些體會,和大家分享一下:

1. 對RT-Thread的體系結構不熟悉,特別是設備驅動層這塊,如果不理解,很可能會出現如下情況:

這是沒有添加I2C底層驅動的原因。當時的情況是這樣的,我在menuconfig配置環境中,Device Drivers子條目下,打開了I2C的驅動,如下圖所示:

我單純的以為這樣就行了,還天真的想著RT-THread真貼心,啥都做好了,唉!Too young too simple! 這個只是做好了I2C設備(總線)的抽象層(BUS層),供應用層調用,跟linux的設備驅動體系類似,這樣做的好處在于能統一設備,管你是什么設備,萬千接口,你在我這里就是一個總線接口,從而簡化應用層的邏輯處理。如下圖所示:

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

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

事實上,767不能用pin設備復位PCF8574的,必須用I2C設備進行驅動,原因就是硬件決定的!

馬爺爺,毛爺爺的辯證法,矛盾論教導我們,切莫教條主義,靜止孤立片面的看待問題,這次感同身受。

上面算是一些經驗和教訓總結,下面上硬菜。

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

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

下面我們就裝逼到底,讓這個配置圖變為STM32F767IGTx的專屬。進入頂層目錄(進入stm32f767-apollo文件夾內,以下均稱“頂層目錄”),打開Kconfig頂層kernel-config文件。 加上如下代碼

保存退出,我們再menuconfig一下看下效果。

吊不吊先不說了,就說裝逼足夠了吧,哈哈! 4.雖然很好看,但是步驟3目前來說還是沒有什么卵用,萬里長征才剛剛開始。在頂層目錄下,打開template.uvprojx文件(沒錯,您要是不瞎搞,這個文件目測應該在最下面),用keil打開之后,修改為對應的STM32F767IGx芯片,如下圖所示。這樣,再用命令生成工程時,默認的就是767IGT,不用每次都重新修改了。

5.進入Libraries子目錄,打開SConscript文件,做如下修改:

這樣的話,生產工程時,會自動加載767的啟動文件,并且在keil的C/C++預定義框中會自動定義STM32F767xx如下圖所示:

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

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

回到上層,如果設備虛擬文件系統打開了的話,關掉吧,用不上的。進入Network stack子條目,再進入LWIP子條目,選擇LWIP的版本為2.0.2如果有路由器,現在就可以了,如果沒有,需要配置靜態IPv4地址。如圖所示:

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

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

寫在最后,這個帖子斷斷續續寫了一天,很累,但是分享很開心。衷心希望大家多多斧正!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    88

    文章

    11760

    瀏覽量

    219037
  • I2C
    I2C
    +關注

    關注

    28

    文章

    1556

    瀏覽量

    131241
  • LwIP
    +關注

    關注

    2

    文章

    90

    瀏覽量

    29576

原文標題:【周四RTOS專欄】基于正點原子F767的RT-Thread LwIP移植

文章出處:【微信號:elecfans,微信公眾號:電子發燒友網】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    爬壁機器人磁鐵的一些常見問題

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

    并聯使用MOS存在一些問題,要怎樣做才能避免這些問題?

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

    如果將蜂鳥的risc-v移植到其他的fpga中想實現一些外設功能有什么辦法?可以不用操作系統直接添加verilog代碼嗎?

    請問如果將蜂鳥的risc-v移植到其他的fpga中想實現一些外設功能有什么辦法?可以不用操作系統直接添加verilog代碼嗎?
    發表于 11-10 06:35

    蜂鳥E203的浮點指令集F的一些實現細節

    周期。 總結 本文介紹的內容是為了完成基礎功能:對蜂鳥E203 RISC-V內核的微架構實現進行定優化,添加F拓展的過程中的一些記錄。
    發表于 10-24 08:57

    Ubuntu20.04系統中訓練神經網絡模型的一些經驗

    本帖欲分享Ubuntu20.04系統中訓練神經網絡模型的一些經驗。我們采用jupyter notebook作為開發IDE,以TensorFlow2為訓練框架,目標是訓練個手寫數字識別的神經網絡
    發表于 10-22 07:03

    移植時候發現卡死,為什么?

    請教大佬,我是按照網上的教程來移植的,板子是野火的霸天虎,但是到最后驗證的時候出問題了,發現board.c文件中的代碼可以運行,但就是運行不到主函數,而是卡死以下兩個函數中 以下是我的主函數和board.c文件
    發表于 09-29 06:28

    TriCore移植RTT的時候遇到了debug現象正常,為什么?

    TC377上移植RTT,驗證的時候發現正常燒錄沒有用,但debug的時候功能正常。懷疑是初始化或者中斷問題,但能力有限實在查不出來原因
    發表于 09-10 06:51

    請問工程移植都有哪些需要注意的地方?

    ST的固件庫還是挺豐富的,有時候我們直接移植工程還是挺方便的,不過總是會有各種各樣的報錯存在,移植時候有哪些需要注意的嗎?或者
    發表于 07-11 06:50

    關于芯片設計的一些基本知識

    芯片的設計理念眾所周知,芯片擁有極為復雜的結構。以英偉達的B200芯片為例,巴掌大的面積上,塞入了2080億個晶體管。里面的布局,堪稱個異次元空間級的迷宮。英偉達B200芯片如此復雜的架構
    的頭像 發表于 06-11 12:16 ?1211次閱讀
    關于芯片設計的<b class='flag-5'>一些</b>基本知識

    基于STM32 HAL庫與標準庫的ESP8266接入機智云方案(

    新手。實際的開發和移植過程中,還是會遇到不少問題,當前機智云平臺自動生成的代碼與網上的一些舊的教程有差異?,F在,我將自己成功的開發經驗總結出來,手把手教大家如何進
    的頭像 發表于 05-28 18:02 ?1128次閱讀
    基于STM32 HAL庫與標準庫的ESP8266接入機智云方案(<b class='flag-5'>一</b>)

    Debian和Ubuntu哪個好一些?

    兼容性對比Debian和Ubuntu哪個好一些,并為您揭示如何通過RAKsmart服務器釋放Linux系統的最大潛能。
    的頭像 發表于 05-07 10:58 ?1146次閱讀

    FX2LP USB上配置GPIF中斷時遇到一些問題,求解決

    你好,我 FX2LP USB 上配置 GPIF 中斷時遇到一些問題。 我啟用了 INT4 中斷并從 GPIF 中選擇了源 INT4,然后啟用了 GPIF 完成中斷,但我看不到中斷 4 工作。 我該如何做呢?
    發表于 05-06 08:00

    智多晶LWIP網絡通信系統介紹

    物聯網蓬勃興起的當下,嵌入式設備的網絡通信能力如同為其插上了騰飛的翅膀,使其能夠自由穿梭于信息的浩瀚海洋。而 LWIP,宛如位身姿矯健的輕騎兵,資源有限的嵌入式系統中飛馳,輕松完
    的頭像 發表于 04-10 16:27 ?2091次閱讀
    智多晶<b class='flag-5'>LWIP</b>網絡通信系統介紹

    樹莓派自動化控制項目中的一些潛在應用

    自動化控制項目中的一些潛在應用。之前,我們已經為Arduino平臺探討了相同的話題。我們確定Arduino是個出色的教育工具,但由于一些限制,它無法工業環境中完全
    的頭像 發表于 03-25 09:45 ?622次閱讀
    樹莓派<b class='flag-5'>在</b>自動化控制項目中的<b class='flag-5'>一些</b>潛在應用

    移植LWIP+FREERTOS時遇到的問題怎么解決?

    各位大佬,小弟嘗試移植LWIP+FREERTOS的時候出現了如下問題,請各位大佬幫忙看看是哪里的問題,我用了FreeRTOS+LWIP做M
    發表于 03-11 06:48