日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DM3730 x-loader 分析 一

發布時間:2024/1/1 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DM3730 x-loader 分析 一 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

x-loader采用廣州英碼DM3730開發板 \x-loader\board\omap3stalker.c

先把這幾個宏定義弄明白,在以后的代碼中多次用到

?

#define __raw_readl(a)?(*(volatile unsigned int *)(a)) ? ? ? ? ?/*讀出寄存器里值*/

#define __raw_writel(v, a)?(*(volatile unsigned int *)(a) = (v)) ?/*把a寫入v這個地址*/

#define __raw_readw(a)?(*(volatile unsigned short *)(a))

#define __raw_writew(v, a)?(*(volatile unsigned short *)(a) = (v))



以上面這個為例展開宏

mode = __raw_readl(CONTROL_STATUS) & (DEVICE_MASK);

? ? ? ? ? ?=?__raw_readl(OMAP34XX_CTRL_BASE + 0x2F0) & (DEVICE_MASK);

? ? ? ? ? ?=__raw_readl(OMAP34XX_L4_IO_BASE+0x2000 + 0x2F0) & (DEVICE_MASK);

? ? ? ? ??=__raw_readl(0x48000000+0x2000?+ 0x2F0) & (DEVICE_MASK);

? ? ? ? ? =__raw_readl(0x480022F0) & (BIT8|BIT9|BIT10);

? ? ? ? ? =__raw_readl(0x480022F0) & (1<<8|1<<9|1<<10);

? ? ? ? ? =(*(volatile unsigned int *)(0x480022F0))?& (000001110000000);/*取出0x480022F0地址中的值,&0b000001110000000,相當于到第8,9,10位的值不變,其它清0*/

return mode >>= 8?/*把上面得到的mode右移8位,得到低3位的值*/

0x480022F0 地址對應ds中 ?CONTROL_STATUS 寄存器 在2587頁,可以看到8 9 10位是設備類型

? ? ? ? ?



這個函數也是類似上面的宏展開后

mode=(*(volatile unsigned int *)(0x480022F0))?& (000000000001111);/*取出0x480022F0地址中的值,&0b000000000001111,相當于到第低4位的值不變,其它清0,第0-4位正好對應SYSBOOT*/

下面代碼(129-170)判斷mode值,確定系統啟動順序。


以下代碼(171-344)基本都是用同樣方法,取出相應寄存器里的值判斷cpu 類型,cpu ID,cpu系列型號,cpu版本信息,打印出cpu相關信息


對應英碼開發板啟動信息,可以看到OMAP36XX/37XX-GP ES2.1




總結

以上是生活随笔為你收集整理的DM3730 x-loader 分析 一的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。