移植pmon要比移植uboot難嗎?
和 uboot 移植相比,給開(kāi)發(fā)板移植 pmon 難嗎?有什么區(qū)別呢。我們?cè)谝浦?uboot 的時(shí)候,基本上是不 會(huì)在 uboot 的官網(wǎng)去下載純凈的 uboot 鏡像的,而是用的半導(dǎo)體廠家提供的 bsp 包里面的 uboot。為什么要 這么做呢?并不是說(shuō) uboot 官網(wǎng)里面的 uboot 源碼不能用,不能移植,而是 uboot 官網(wǎng)里面的 uboot 對(duì)相應(yīng)的 CPU 的支持不是很好。你想哈,誰(shuí)對(duì) CPU 最熟悉呢?肯定是半導(dǎo)體廠家是不是,他們對(duì)自己的 CPU 肯定 是最熟悉的。所以他們提供的 bsp 里面的 uboot 是對(duì)他們的 CPU 支持最好的,驅(qū)動(dòng)最全的。所以我們不會(huì) 在 uboot 官網(wǎng)去下載,然后在去移植。而且使用半導(dǎo)體廠家提供的 BSP 還有一個(gè)好處,就是移植非常簡(jiǎn)單。
就拿 uboot 移植來(lái)說(shuō),只需要基于半導(dǎo)體廠家的 BSP 來(lái)針對(duì)自己的開(kāi)發(fā)板適配即可。所需要的工作并不多。
同理,在 LS2K1000 上我們使用的是 pmon,那這個(gè) pmon 我們要去找原生的嗎,顯然不是。pmon 現(xiàn)在是龍 芯中科在進(jìn)行維護(hù),所以,龍芯中科提供的 pmon 會(huì)對(duì)自己的 CPU 支持的非常友好?;旧暇褪俏覀兡玫?BSP 以后,稍加修改就可以完美的在開(kāi)發(fā)板上來(lái)運(yùn)行了。所以,pmon 的移植要比 uboot 的移植更加簡(jiǎn)單。
9.9.2 獲取原廠 pmon 源碼
源碼 pmon 源碼在:LS2K1000 開(kāi)發(fā)板資料\12_原廠 BSP\1_pmon 源碼
接著我們將 pmon 源碼拷貝到 Ubuntu 虛擬機(jī)的任意目錄下,然后按照手冊(cè) 7.1 編譯和 6.6 燒寫 pmon 到開(kāi)發(fā)板??梢园l(fā)現(xiàn),源碼的 pmon 源碼直接編譯成功就可以在開(kāi)發(fā)板上運(yùn)行。非常友好。
9.9.3 配置 can 總線
我就進(jìn)到 pmon 源碼的 pmon-loongson3/Targets/LS2K/conf 路徑下,使用命令 cp LS2K.dts LS2K.dts_back 備份一下設(shè)備樹(shù)文件,如下圖所示:

接著我們使用命令 vim LS2K.dts 打開(kāi)設(shè)備樹(shù)文件,找到 can0 和 can1 的設(shè)備節(jié)點(diǎn),可以發(fā)現(xiàn),在 BSP 里 面已經(jīng)默認(rèn)配置好了,不需要我們?cè)陬~外配置,如下圖所示:

接著我們來(lái)配置引腳的復(fù)用關(guān)系,通過(guò) LS2K1000 的數(shù)據(jù)手冊(cè),可知地址 0x1fe10420 的第 16 到 17 位配置的是 can 引腳的復(fù)用關(guān)系,如下圖所示:

通過(guò)上表可知,如果我們要把 GPIO 設(shè)置為 CAN 功能,我們需要將 16 到 17 位設(shè)置為 1,我們可以直接在 pmon 里面操作這個(gè)寄存器,比如使用在 Targets/LS2K/ls2k/tgt_machdep.c 文件中增加代碼(volatile int *)0xbfe10420 |=(2<<16)將這倆位設(shè)置為 1,但是在 pmon 的 bsp 里面這些工作已經(jīng)給我們做好了,只不過(guò)是沒(méi)有編譯進(jìn)去而已。
在 Targets/LS2K/ls2k/tgt_machdep.c 文件的第 464 行使用了宏定義 PAI2 來(lái)決定包不包含 pai2.c 文件,如下圖所示:

pai2.c 文件在路徑 Targets/LS2K/ls2k/pai2.c 下,這個(gè)文件里面通過(guò)宏定義 SEL_CAN 來(lái)對(duì) CAN 的管腳復(fù)用進(jìn)行了配置,如下圖所示:

所以我們是不是就不用在自己?jiǎn)为?dú)來(lái)添加代碼了呢,我們只需要加上這 PAI2 和 SEL_CAN 這來(lái)個(gè)宏定義即可,我們打開(kāi) Targets/LS2K/conf/ls2k 文件,取消注釋 option PAI2 并增加宏定義 option SEL_CAN,如下圖所示:

然后我們重新編譯 pmon 源碼并燒寫到開(kāi)發(fā)板上,使用命令 devmem 0x1fe10420 來(lái)查看有沒(méi)有成功將這倆個(gè)管腳的復(fù)用設(shè)置成 can,如下所示:

將 0x00131D49 換算成 2 進(jìn)制,可以發(fā)現(xiàn) 16 到 17 位已經(jīng)成功設(shè)置成了 1,所以這倆個(gè) GPIO 已經(jīng)成功被設(shè)置成 CAN。接著我們就可以來(lái)測(cè)試開(kāi)發(fā)板的 CAN 功能了。
3.2.7 CAN 接口測(cè)試
開(kāi)發(fā)板板載了兩路 CAN 接口, 我們可以使用這兩路 CAN 接口驗(yàn)證 CAN 的數(shù)據(jù)收發(fā)。首先我們使用電纜線連接 CAN1 和 CAN2(can 連接的時(shí)候: H 接 H、 L 接 L) , 如下圖所示:


開(kāi)發(fā)板上的兩路 CAN 默認(rèn)是關(guān)閉的, 我們?cè)谡{(diào)試串口終端輸入“ip link set can0 up type can bitrate
125000 triple-sampling on” 命令, 設(shè)置 CAN0 的波特率是 125000, 并打開(kāi) CAN0, 運(yùn)行結(jié)果如下圖所示:

然后我們?cè)谡{(diào)試串口終端輸入“
ip link set can1 up type can bitrate 125000 triple-sampling on” 命令, 設(shè)
置 CAN1 的波特率是 125000( CAN 總線在進(jìn)行數(shù)據(jù)收發(fā)的時(shí)候,通信雙方的波特率要設(shè)置成一致),并
打開(kāi) CAN1, 運(yùn)行結(jié)果如下圖所示:

接下來(lái)我們使用 CAN0 作為數(shù)據(jù)接收端, 我們需要在調(diào)試串口終端輸入“candump can0 &” 命令, 運(yùn)行結(jié)果如下圖所示:

然 后 我 們 使 用 CAN1 作 為 數(shù) 據(jù) 發(fā) 送 端 , 我 們 在 調(diào) 試 串 口 終 端 輸 入 “cansend can1 6A0#11.22.33.44.55.66.77.88”命令, 發(fā)送數(shù)據(jù), 其中的 6A0 是幀 ID, #后面的是數(shù)據(jù), 共 8 個(gè)字節(jié)。 運(yùn)行結(jié)果如下圖所示:

上圖我們可以看到 CAN1 發(fā)送數(shù)據(jù)以后, 后臺(tái)運(yùn)行的 CAN0 接收程序收到了 CAN0 的數(shù)據(jù), 并顯示出來(lái), 接收到的數(shù)據(jù)和發(fā)送的數(shù)據(jù)內(nèi)容一致。
數(shù)據(jù)接收端和發(fā)送端也可以互換,可以參考上面的命令(主要是解釋和發(fā)送程序的 CAN 接口設(shè)置對(duì))。
相應(yīng)視頻教程:https://www.bilibili.com/video/BV1mT4y117eN?p=1
-
龍芯
+關(guān)注
關(guān)注
3文章
395瀏覽量
32410 -
PMON
+關(guān)注
關(guān)注
0文章
8瀏覽量
8416
發(fā)布評(píng)論請(qǐng)先 登錄
迅為2K0300開(kāi)發(fā)板進(jìn)一步刨析,打造HMI一體機(jī)產(chǎn)品的靈活優(yōu)勢(shì)

基于龍芯2K0300處理器 龍芯中科攜手正點(diǎn)原子發(fā)布龍芯ATK-DL2K0300B開(kāi)發(fā)板

龍芯2K0300開(kāi)發(fā)板及資料來(lái)襲,開(kāi)啟國(guó)產(chǎn)芯片新篇章!
國(guó)產(chǎn)龍芯處理器雙核64位系統(tǒng)迅為2K1000開(kāi)發(fā)板/核心板
迅為iTOP-LS2K0300HMI/開(kāi)發(fā)板/核心板
迅為電子推出基于龍芯2K0300的HMI產(chǎn)品

迅為龍芯2K1000開(kāi)發(fā)板/核心板介紹
迅為龍芯2K1000開(kāi)發(fā)板/核心板流暢運(yùn)行Busybox、Buildroot、Loognix、QT5.12系統(tǒng)
龍芯LS2K1000LA和LS2K1000有何區(qū)別?
迅為itop-3568開(kāi)發(fā)板AMP雙系統(tǒng)使用手冊(cè)之燒寫AMP鏡像

北京迅為iTOP-LS2K0500開(kāi)發(fā)板快速使用編譯環(huán)境虛擬機(jī)Ubuntu基礎(chǔ)操作及設(shè)置

【北京迅為】itop-龍芯2k1000開(kāi)發(fā)指南Linux基礎(chǔ)入門vim 編輯器

評(píng)論