DM6446開(kāi)發(fā)闆領航——loadmodules.sh文件詳拿熱解

DM6446 開(kāi)發(fā)闆領航 loadmodules.sh 文件歌資詳解 針對(duì) ARM+DSP 這(zhè)種(zhǒng)架們科構的 CPU , DM6446 是很經(jīng)典校讀的一款。有些朋友覺得把 DSP 和 ARM 通信已經南資(jīng)搞懂了,可是程序運行的時(shí)候,有時(shí)候能(néng數兵)成(chéng)功,有時(shí)請黑候會(huì)

DM6446開(kāi)發(fā)闆領航——loadmodules.sh文件上了詳解

時(shí)間:2013-10-30   點擊:3子場105

 

DM6446開(kāi)發(fā)闆領航——loadmodules.sh文件詳解

 

針對(duì)ARM+DSP這(zhè)種(zhǒng)架構的CPUDM6446是很經(jīng)典的一款。有些內空朋友覺得把DSPARM通信已經(jīng)搞懂了,可是程序運行的時(shí)候,有時(shí)候喝懂能(néng)成(chéng)功,有時(問得shí)候會(huì)死機。有的算法可以運行,有的算法卻制如又不能(néng)運行。排除我們算法在語言及其邏輯報道的錯誤後(hòu),我們就(jiù)應當仔細分析算法在内存妹討方面(miàn)的處理,系統内存的分配與使用情況。其中,在我們應用程序啓動前知服,一般需要加載兩(liǎng)個.ko文件,也就(jiù)是dsplinkk.kocmemk.ko兩(liǎng)個文件。這(zhè)請你兩(liǎng)個文件是由loadmodules.sh這(zhè)個shell文件來加載的,這(zhè)個文件一個作用是加載兩(liǎng)個驅動文件,另好術一個重要的作用是對(duì)共享煙章内存的分配,這(zhè)點很多人沒(m頻錢éi)有理解或注意到。

下面(miàn)是TI提供的一個loadmodules.sh文件,我來做詳細的解說(shuō)。

 

 

# insert cmemk, tell it to occupy林亮 physical118MB-128MB.

insmod cmemk.ko p件時hys_start=0x87600000phys_end=0x88000答裡000 pools=1x36000房區00,5x829440,2x1244160,1x40960,2離開x8192

 

# insert dsplinkk文腦

insmod dsplinkk.k懂得o

 

# make /dev/dsplink

rm -f /dev/dsplink

mknod /dev/dsplink c `awk&q廠用uot;\\$2==\"dsplink\小窗" {print \\$1大現}" /proc/devic哥雜es` 0

 

loadmodules.sh文件的寫法,根據DVSDK版本的不同,會(huì)不同。這(zhè)個是DM6446使用的DVSDK2.0版本的。

# insert cmemk, tell it to occupy phy議理sical118MB-128MB.

insmod cmemk.ko劇會 phys_start=0x87600000phys_end=車電0x88000000

第一行是注釋。start=0x87600000phys_en草農d=0x88000000指定了ARMDSP的共享内存的起(qǐ)始和終止位置,這(zhè)點購我一定要與自己的系統一緻。在DM6446中,内存分爲三塊,一塊給ARM使用,也就(jiù)是linux使用,第二塊爲共享内存,ARMDSP都(dōu)可以訪問,使用;第三塊給DSP使用,DSP一般用來實現算法。DSPARM之間的通信通過(guò)共享内存來實現。

pools=1x3600000,5x8從少29440,2x1244160,1x40960,2x8192

這(zhè)個很多人不理解,往往自己的程序運行正确了,但是對(duì)鐵中這(zhè)個并不理解。

共享内存被(bèi)劃分了多個内存池,你完全應該根據你算法的情況,來劃分内存池秒月。

1x3600000:代表劃分了13600000字節大小的内存池

5x829440:代表劃分了5829440字節大小内存池

……

說(shuō)到這(zhè)裡(lǐ),我們應該很容易就(jiù窗內)理解到,這(zhè)個共享内存池的劃分是:

13600000字節大小的buffer

5829440字節大小的buffer

21244160字節大小的buffer

140960字節大小的buffer

28192字節大小的buffer

 

當你的算法使用共享内存時(shí數紙),系統會(huì)到你使用的内存放在大小最合适的内存池中。所謂最适合,就音市(jiù)是能(néng)放下你的buffer,多餘的空間又最小。

 

# insert dsplin玩看kk

insmod dsplinkk.ko

這(zhè)個是加載驅動

 

# make /dev/dsplink

rm -f /dev/dspli自身nk

mknod /dev/dsplink c `awk"\\$這動2==\"dsplink\" {pri志生nt \\$1}" /proc/device對民s` 0

 

删除節點和增加節點。

這(zhè)些都(dōu)是普通的linux指令,我想大家都(dōu)會(huì)很容易理解。如果大家有器書疑問或文章有不當之處,歡迎指定。謝謝。