uboot網絡卡驅動移植

2021-10-04 21:40:40 字數 2117 閱讀 1891

官方的uboot預設是不使能網絡卡相關的**的,既在配置標頭檔案中config_cmd_net預設是沒有被定義的

要使能網絡卡相關**就要在配置標頭檔案中新增config_cmd_net這個巨集,切記還要去掉#undef config_cmd_net這個定義

ping命令在官方uboot中也沒有使能,所以需要在配置標頭檔案中新增對應的巨集

tftp命令在官方的uboot中是預設被使能的,不依賴於其他的巨集

在三星的uboot中網絡卡的初始化在bord_init函式中進行,所以我們將三星的網絡卡初始化移植到uboot官方的uboot中的bord_init函式中

三星uboot:在對於我的開發板用的是smc911x的網絡卡所以,所以board_init()函式呼叫smsc9220_ore_init()函式初始化網絡卡,我們需要將smsc9220_ore_init()移植到我們的uboot中,smsc9220_ore_init函式以及於其相關的巨集都在s5pc11x.c中定義。

在board_init()函式中呼叫smsc9220_ore_init()函式,並將smsc9220_ore_init()函式移植到goni.c檔案中。

移植後的uboot官方的uboot:

開啟網路相關的巨集後,重新編譯uboot並上電,板子列印如下資訊

這兩句錯誤在初始化網絡卡時eth_initialize函式中列印

eth_initialize()函式呼叫board_eth_init()或cpu_eth_init()函式來註冊網絡卡裝置,但官方的uboot中board_eth_init()函式是空函式,而cpu_eth_init()函式根本沒有定義。所以需要將三星uboot中註冊網絡卡的函式移植到這裡

三星的uboot在eth_initialize()函式中通過smc911x_initialize()函式中註冊網絡卡裝置

smc911x_initialize()這個函式給網絡卡結構體的init、halt、send、recv等函式賦值,並通過eth_register()這個函式將該結構體註冊到網絡卡裝置的列表中,從而完成網絡卡的註冊。在後面uboot使用網路相關的命令是會同過這個結構體中成員變數對網絡卡進行操作。

與smc911x網絡卡相關的函式都在smc911.c中驅動檔案中(包括smc11x_initialize這個函式),這是uboot自帶的驅動檔案,不需要移植直接呼叫其中的函式就行。

只需要在board_eth_init()這個空函式中宣告並呼叫smc11x_initialize函式就能完成網絡卡的註冊了

u boot1 1 6的移植 網絡卡支援

注 藍色為修改部分!driver dm9000x.c中修改 inteth init bd t bd hj end www.embedsky.net printf mac 02x 02x 02x 02x 02x 02x n bd bi enetaddr 0 bd bi enetaddr 1 bd bi...

網絡卡(dm9000)驅動移植

網絡卡 dm9000 驅動移植 看到網上有很多的部落格分享,比如 在此,描述一下自己的製作過程 1.修改arch arm plat s3c24xx common smdk.c檔案 在包含標頭檔案的區域增加以下 在smdk devs結構體之前新增以下 if defined config dm9000 ...

u boot 上移植新的 lcd 驅動

本移植過程假設使用者使用者是從給定的 demo 板開發自己的新產品。1 board myboard myboard.c 該檔案增加如下 下面的結構體中配置 lcd 的引數 然後根據需要調整 define mux default es2 位置開始 gpio 口定義 include ifdef conf...