玩转百问网东山Pi壹号-SSD202 Linux开发板(一)

简介: 玩转百问网东山Pi壹号-SSD202 Linux开发板(一)

很早之前就做过SSD20x相关的平台,刚好手里有一块东山Pi壹号-开发板,于是我就将我为这块板子做了一些定制,以支持我未来的项目开发:

一、将SSD202的内存进行扩容

刚拿到的板子,上电后RAM只有50M,基本上干不了什么事情,于是参考官方文档了解到了MMA这个东西:

640.png

总共的RAM的大小是0x7f00000 = 133169152 / 1024 / 1024 约等于 127MB


MMA=0x3800000=58,720,256 / 1024 / 1024=56MB


有两种方法优化掉MMA:


  • 修改命令行启动参数,重新编译Kernel
  • 进入uboot命令,手动去掉MMA(前提是uboot可以进入)


为了方便,倾向于第二种,在uboot启动终端,我们可以通过printenv命令输出启动参数:

640.png

mma_heap=mma_heap_name0,miu=0,sz=0x3800000===>56MB


我们将这块去掉,因为我们不需要MMA,因此可以通过setenv bootargs的方式进行修改:

640.png

然后保存后reset正常重启后,我们通过top或者cat /proc/memory等方式就可以看到RAM被释放出来了,这里通过top的方式查看:

640.png

二、SSD202 SPI配

1、Linux内核配置

make menuconfig配置以下选项


CONFIG_SPI_SPIDEV


CONFIG_MS_SPI_INFINITY

2、设备树配

东山壹号SSD202开发板上的SPI接口要选择Pad mode=4:


Pad mode=4 PAD_FUART_RX PAD_FUART_TX PAD_FUART_CTS PAD_FUART_RTS


打开主设备树infinity2m.dtsi,修改节点:

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;*/  /*注释节点*/
        serial3 = &uart2;
    };

然后打开设备树: infinity2m-ssc011a-s01a-padmux-display.dtsi 对应电路原理图:

640.png

配置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重启系统后查看是否有SPI设备:

640.png

如果出现以上设备节点,则证明spi设备已经配置成功。

三、SSD202 UART配置

百问网SSD202开发板的SDK没有将ttyS0以外的串口开放,参考SSD202官方文档添加,修改设备树文件:infinity2m-ssc011a-s01a-padmux-display.dtsi,参考官方文档描述:

640.png

根据实际项目需求往设备树文件添加:

<PAD_UART1_RX    PINMUX_FOR_UART1_MODE_1   MDRV_PUSE_UART1_RX>,
<PAD_UART1_TX    PINMUX_FOR_UART1_MODE_1   MDRV_PUSE_UART1_TX>,

后重新编译内核再为开发板更新内核即可生效。

四、SSD202 USB端口配置

640.png

640.png

五、SSD202 USB串口配置

640.png

勾选常用的选项:

USB Winchiphead CH341 Single Port Serial Driver
USB CP210x family of UART Bridge Controllers
USB Prolific 2303 Single Port Serial Driversss

640.png

然后重新编译内核烧写即可生效。

六、SSD202 USB大容量存储配置

640.png

七、SSD202 支持Fat文件格式配置

1、内核配置方式

内核搜索 CONFIG_VFAT_FS 配置选项,然后配置为*号即可。其他文件系统的支持同样的方式配置

fat 文件系统:  CONFIG_VFAT_FS
nfs文件系统: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

原因是没有配置相应的文件系统的codepage;

File systems  --->
    -*- Native language support  --->
         < * >   Codepage 437 (United States, Canada)

把Codepage 437 (United States, Canada)这个选项添加上,如果需要支持其他语言,同样也可以选上。如果挂载继续提示

[   21.785549] FAT-fs (sda1): IO charset iso8859-1 not found
mount: mounting /dev/sda1 on /mnt/ failed: Invalid argument

再把CONFIG_NLS_ISO8859_1这项配置也添加上去。然后就可以挂载了:

640.png

640.png

其它:待补充!

往期精彩

DIY云端情书打印机(基于腾讯定制开发板)


移植 ubuntu core 16.04(ubuntu-base)到i.MX6ULL开发板


很荣幸成为第一批全球首款可折叠开发板小熊派鸿蒙开发板体验官!


天啊!鹅厂都开始做开发板了?网红腾讯物联网开发板终极开箱评测,让我们一睹为快!

目录
相关文章
|
Ubuntu Linux Windows
Linux开发环境配置详细过程--正点原子阿尔法开发板
Linux开发环境配置详细过程--正点原子阿尔法开发板
465 0
|
3月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
|
5月前
|
Linux
【GEC6818开发板】Linux驱动中printk无法在终端输出显示
【GEC6818开发板】Linux驱动中printk无法在终端输出显示
|
Linux
从零开始写linux字符设备驱动程序(四)(基于友善之臂tiny4412开发板)
从零开始写linux字符设备驱动程序(四)(基于友善之臂tiny4412开发板)
132 0
|
Linux Android开发
手把手教你从零实现Linux misc设备驱动二(基于友善之臂4412开发板)
手把手教你从零实现Linux misc设备驱动二(基于友善之臂4412开发板)
115 0
|
6月前
|
Ubuntu Linux 开发工具
Linux下的IMX6ULL——开发板的第一个APP和驱动实验(三)
Linux下的IMX6ULL——开发板的第一个APP和驱动实验(三)
215 0
Linux下的IMX6ULL——开发板的第一个APP和驱动实验(三)
|
6月前
|
Ubuntu Linux 虚拟化
Linux下的IMX6ULL——开发板基本操作(二)
Linux下的IMX6ULL——开发板基本操作(二)
193 0
Linux下的IMX6ULL——开发板基本操作(二)
|
人工智能 物联网 Linux
手把手之如何在嵌入式Linux上运行QT应用程序(以百问网imx6ull开发板为例)
手把手之如何在嵌入式Linux上运行QT应用程序(以百问网imx6ull开发板为例)
1218 0
|
Linux
手把手教你写Linux设备驱动---定时器(一)(基于友善之臂4412开发板)
手把手教你写Linux设备驱动---定时器(一)(基于友善之臂4412开发板)
133 0
|
Linux API
如何来实现一个Linux内核的系统调用(基于tiny4412开发板)
如何来实现一个Linux内核的系统调用(基于tiny4412开发板)
99 0

热门文章

最新文章