來源 | 嵌入式應用研究院
很早之前就做過SSD20x相關的平臺,剛好手里有一塊東山Pi壹號-開發(fā)板
,于是我就將我為這塊板子做了一些定制,以支持我未來的項目開發(fā):
一、將SSD202的內存進行擴容
剛拿到的板子,上電后RAM只有50M,基本上干不了什么事情,于是參考官方文檔了解到了MMA這個東西:
總共的RAM的大小是0x7f00000 = 133169152 / 1024 / 1024 約等于 127MB
MMA=0x3800000=58,720,256 / 1024 / 1024=56MB
有兩種方法優(yōu)化掉MMA:修改命令行啟動參數(shù),重新編譯Kernel進入uboot命令,手動去掉MMA(前提是uboot可以進入)
為了方便,傾向于第二種,在uboot啟動終端,我們可以通過printenv命令輸出啟動參數(shù):
mma_heap=mma_heap_name0,miu=0,sz=0x3800000===>56MB
我們將這塊去掉,因為我們不需要MMA,因此可以通過setenv bootargs的方式進行修改:
然后保存后reset正常重啟后,我們通過top
或者cat /proc/memory
等方式就可以看到RAM被釋放出來了,這里通過top
的方式查看:
二、SSD202 SPI配置
1、Linux內核配置
make menuconfig配置以下選項
CONFIG_SPI_SPIDEV
CONFIG_MS_SPI_INFINITY
2、設備樹配置
東山壹號SSD202開發(fā)板上的SPI接口要選擇Pad mode=4:
Pad mode=4 PAD_FUART_RX PAD_FUART_TX PAD_FUART_CTS PAD_FUART_RTS
打開主設備樹infinity2m.dtsi,修改節(jié)點:
spi:?spi?{
????????????compatible?=?"sstar_spi";
????????????io_phy_addr?=?<0x1f000000>;
????????????banks?=?<0x1110>,<0x1111>,<0x1038>,<0x101E>,<0x100B>;
????????????clocks?=?<&CLK_mspi0>;
????????????interrupts?=?<GIC_SPI?INT_IRQ_MSPI_0?IRQ_TYPE_LEVEL_HIGH>;
????????????/*
?????????????*?padmux:
?????????????*?mode=1:?PAD_PM_SD_CDZ,PAD_SD_D1,PAD_SD_D0,PAD_SD_CLK,PAD_SD_CMD
?????????????*?mode=2:?PAD_TTL16,PAD_TTL17,PAD_TTL18,PAD_TTL19
?????????????*?mode=3:?PAD_GPIO4,PAD_GPIO5,PAD_GPIO6,PAD_GPIO7
?????????????*?mode=4:?PAD_FUART_RX,PAD_FUART_TX,PAD_FUART_CTS,PAD_FUART_RTS
?????????????*?mode=5:?PAD_GPIO8,PAD_GPIO9,PAD_GPIO10,PAD_GPIO11
?????????????*?mode=6:?PAD_GPIO0,PAD_GPIO1,PAD_GPIO2,PAD_GPIO3
?????????????*/
????????????dma?=?<1>;
????????????spi0_mode?=?<4>;
????????????status?=?"ok";
????????};
????????
????aliases?{
????????console?=?&uart0;
????????serial0?=?&uart0;
????????serial1?=?&uart1;
????????/*serial2?=?&fuart;*/??/*注釋節(jié)點*/
????????serial3?=?&uart2;
????};
然后打開設備樹:?infinity2m-ssc011a-s01a-padmux-display.dtsi
?對應電路原理圖:
配置SPI管腳:
//SPI_DO
<PAD_FUART_RTS??????PINMUX_FOR_SPI0_MODE_4????MDRV_PUSE_SPI0_DO>,
//SPI_DI
<PAD_FUART_CTS??????PINMUX_FOR_SPI0_MODE_4????MDRV_PUSE_SPI0_DI>,
//SPI_CLK
<PAD_FUART_TX???????PINMUX_FOR_SPI0_MODE_4????MDRV_PUSE_SPI0_CK>,
//SPI_CS
<PAD_FUART_RX???????PINMUX_FOR_SPI0_MODE_4????MDRV_PUSE_SPI0_CZ>,
編譯內核燒寫完畢后輸入reset重啟系統(tǒng)后查看是否有SPI設備:
如果出現(xiàn)以上設備節(jié)點,則證明spi設備已經(jīng)配置成功。
三、SSD202 UART配置
百問網(wǎng)SSD202開發(fā)板的SDK沒有將ttyS0以外的串口開放,參考SSD202官方文檔添加,修改設備樹文件:infinity2m-ssc011a-s01a-padmux-display.dtsi,參考官方文檔描述:
根據(jù)實際項目需求往設備樹文件添加:
<PAD_UART1_RX????PINMUX_FOR_UART1_MODE_1???MDRV_PUSE_UART1_RX>,
<PAD_UART1_TX????PINMUX_FOR_UART1_MODE_1???MDRV_PUSE_UART1_TX>,
后重新編譯內核再為開發(fā)板更新內核即可生效。
四、SSD202 USB端口配置
五、SSD202 USB串口配置
勾選常用的選項:
USB?Winchiphead?CH341?Single?Port?Serial?Driver
USB?CP210x?family?of?UART?Bridge?Controllers
USB?Prolific?2303?Single?Port?Serial?Driversss
然后重新編譯內核燒寫即可生效。
六、SSD202 USB大容量存儲配置
七、SSD202 支持Fat文件格式配置
1、內核配置方式
內核搜索?CONFIG_VFAT_FS
?配置選項,然后配置為*號即可。其他文件系統(tǒng)的支持同樣的方式配置
fat?文件系統(tǒng):??CONFIG_VFAT_FS
nfs文件系統(tǒng):CONFIG_NTFS_FS
如果配置上了以后提示
#?mount?-t?vfat?/dev/sda1??/mnt/
[???46.134884]?FAT-fs?(sda1):?codepage?cp437?not?found
mount:?mounting?/dev/sda1?on?/mnt/?failed:?Invalid?argument
原因是沒有配置相應的文件系統(tǒng)的codepage;
File?systems??--->
????-*-?Native?language?support??--->
?????????<?*?>???Codepage?437?(United?States,?Canada)
把Codepage 437 (United States, Canada)這個選項添加上,如果需要支持其他語言,同樣也可以選上。如果掛載繼續(xù)提示
[???21.785549]?FAT-fs?(sda1):?IO?charset?iso8859-1?not?found
mount:?mounting?/dev/sda1?on?/mnt/?failed:?Invalid?argument
再把CONFIG_NLS_ISO8859_1
這項配置也添加上去。然后就可以掛載了:
其它:待補充!