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

news2024/11/24 7:31:23

点击上方“嵌入式应用研究院”,选择“置顶/星标公众号

干货福利,第一时间送达!

来源 | 嵌入式应用研究院

整理&排版 | 嵌入式应用研究院

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

一、将SSD202的内存进行扩容

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

507179006090fa2fda8a9812c8b9e361.png

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

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

有两种方法优化掉MMA:

  • 修改命令行启动参数,重新编译Kernel

  • 进入uboot命令,手动去掉MMA(前提是uboot可以进入)

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

313bbd03343d2c09827ef4978646f68a.png

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

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

654455db1518159f484abb3333d210c7.png

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

4fdaf25d035eeca3050bf8b9cf4d220a.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 对应电路原理图:

7aebba6f453cbd9deaa975f145c6812a.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设备:

1e6a86889fcdc16190cc9feb2fd2e3e4.png

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

三、SSD202 UART配置

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

5139d54b0dd52ff399f8feefb779025d.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端口配置

a9e05ae6b0b5b19ffde0a4f507e2c9f4.png

05baf5064a7250993e29c3a6ab466eeb.png

五、SSD202 USB串口配置

66af89de92d20323bcc72a02ba9d8a8a.png

勾选常用的选项:

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

ddd127d937ed61334bc44f0dbc1c5fdb.png

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

六、SSD202 USB大容量存储配置

ca5915cc69f351302c332449f782fcf2.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这项配置也添加上去。然后就可以挂载了:

dfe9333aa9fb3267102023c0106f66f6.png

e48ea00443281c67c240e8b7d0f02c7c.png

其它:待补充!

往期精彩

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

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

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

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

觉得本次分享的文章对您有帮助,随手点[在看]并转发分享,也是对我的支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/622508.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

儿童睡眠慢波的起源、同步和传播

摘要 目的&#xff1a;使用EEG delta功率(&#xff1c;4Hz)测量的睡眠慢波活动在整个发育过程中发生显著变化&#xff0c;反映了大脑功能和解剖结构的变化。然而&#xff0c;个体慢波特征随年龄的变化尚未被彻底研究。在这里&#xff0c;本研究旨在表征儿童期到成年期的个体慢…

Redis从入门到精通【高阶篇】之底层数据结构简单动态字符串(SDS)详解

文章目录 1.原理解析1.1.SDS的内部实现原理1.1.1 Redis 6.0版本和Redis5.0对比1.1.2 redis6和redis5对比1.1.3 优势1.1.3.1. 动态扩容1.1.3.2. 常数复杂度获取字符串长度1.1.3.3. 杜绝缓冲区溢出1.1.3.4. 减少修改字符串的内存重新分配次数1.1.3.5. 二进制安全1.1.3.6. 兼容部分…

SpringMVC06:Json交互处理

目录 一、什么是JSON? 二、代码测试 1、新建一个module&#xff0c;SpringMVC-05-json&#xff0c;添加web支持和lib包 2、在index.jsp中编写测试内容 3、配置tomcat&#xff0c;启动项目&#xff0c;在浏览器中打开&#xff0c;查看控制台输出 4、controller返回JSON数据…

AC变DC220V变5V小家电电源芯片-AH8652、AH8669

Q: 什么是AH8652和AH8669电源芯片? A: AH8652和AH8669都是AC变DC的电源芯片&#xff0c;适用于将输入的交流电压&#xff08;220V&#xff09;转换为5V直流电压输出&#xff0c;用于小家电的电源模块等应用。 AC变DC220V变5V小家电电源芯片-AH8669 Q: AH8652和AH8669的最大输…

2023智源大会议程公开丨自动驾驶论坛

6月9日&#xff0c;2023北京智源大会&#xff0c;将邀请这一领域的探索者、实践者、以及关心智能科学的每个人&#xff0c;共同拉开未来舞台的帷幕&#xff0c;你准备好了吗&#xff1f;与会知名嘉宾包括&#xff0c;图灵奖得主Yann LeCun、图灵奖得主Geoffrey Hinton、OpenAI创…

Observability:如何有效地将应用日志发送到 Elasticsearch

在今天的文章中&#xff0c;我们将探讨使用 3 种不同的架构发送应用的日子到 Elasticsearch。我们将详述它们的优缺点。更多关于日志架构的介绍&#xff0c;请参考 “Elastic&#xff1a;开发者上手指南” 中的 “Elastic Stack 架构” 部分。 介绍 采用 Elastic Stack&#x…

前端录制回放rrweb

rrweb 是 ‘record and replay the web’ 的简写&#xff0c;旨在利用现代浏览器所提供的强大 API 录制并回放任意 web 界面中的用户操作。 rrweb中文文档 https://github.com/rrweb-io/rrweb/blob/master/guide.zh_CN.md 本文项目地址 https://github.com/qdfudimo/vue-rrweb…

网安学习|Kail安全渗透测试系统之【前期信息收集】工具实践学习

欢迎关注「全栈工程师修炼指南」公众号 点击 &#x1f447; 下方卡片 即可关注我哟! 设为「星标⭐」每天带你 基础入门 到 进阶实践 再到 放弃学习&#xff01; “ 花开堪折直须折&#xff0c;莫待无花空折枝。 ” 作者主页&#xff1a;[ https://www.weiyigeek.top ] 博客&…

达梦数据库与MySQL的区别及语法差异

达梦数据库与MySQL的区别及其SQL语句对比 简介&#xff1a;正文&#xff1a;1. 达梦数据库和MySQL的概述2. 特点对比3. SQL语句对比1. 数据类型&#xff1a;2. 语法&#xff1a;1. DDL&#xff08;数据定义语言&#xff09;的差异&#xff1a;2. DML&#xff08;数据操作语言&a…

面向对象——多态、抽象类、接口

学习资料来自&#xff1a;黑马程序员&#xff0c;内容仅为学习记录&#xff0c;侵删 多态 多态&#xff1a;事务存在的多种形态 多态的前提&#xff1a;1、有继承关系&#xff1b;2、重写父类方法&#xff1b;3、父类引用指向子类对象 面向对象 面向对象多态中成员访问特点…

动态测试数据处理

分类 动态测试数据&#xff1a; 1、确定性数据&#xff1a;能够用明确的数学表达式进行描述的数据称为确定性数据。 Ⅰ、周期数据 Ⅱ、非周期数据 2、随机性数据&#xff1a;无法用明确的数学表达式表述&#xff1b;若在一个…

强大的工具:APISpace IP归属地查询API

引言 IP地址在互联网世界中扮演着重要的角色&#xff0c;对于许多应用程序和服务来说&#xff0c;了解IP地址的归属地信息可以提供有价值的洞察和功能。 在本文中&#xff0c;我们将介绍一种名为IP归属地-IPv4区县级 API 的强大工具&#xff0c;它提供了查询 IP 地址归属地信…

如何解释物联网IOT平台?

物联网开发的本质是将各种物品通过网络连接在一起&#xff0c;并对这些物品进行数字化管理&#xff0c;从而实现智能自动化。在物联网的早期阶段&#xff0c;一些物联网应用程序&#xff08;例如&#xff0c;智能电表&#xff09;使用软件将信息传输到后台服务器。但随着时间的…

华为路由器:多区域OSPF协议实验

一、实验拓扑 二、ospf基本概念复习 区域划分&#xff1a;area0为骨干区域&#xff0c;其他area1、area2都为普通区域/常规区域。普通区域必须和骨干区域直接相连。ABR&#xff1a;区域边界路由器。R2、R3位于两个区域的中间&#xff0c;我们称之为区域边界路由器 &#xff1b…

ObjectARX如何监控实体双击事件(利用钩子函数或者反应器)

目录 1 实现方法1——钩子函数1.1 钩子函数的作用1.2 利用钩子函数监控双击事件 2 实现方法2——反应器2.1 反应器的作用2.2 利用编辑器反应器监控双击事件 在ObjectARX开发中&#xff0c;常常要监控鼠标的双击事件&#xff0c;比如&#xff0c;往一个实体中写了扩展数据&#…

基于html+css的图展示115

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

2023年湖北下半年中级职称申报中级职称评审申报条件是什么?

2023年湖北下半年中级职称申报中级职称评审申报条件是什么&#xff1f; 2023年湖北中级职称申报条件&#xff1a;本科毕业5年&#xff0c;专科毕业7年&#xff0c;相关专业 助工满4年这个条件目前不是硬性要求&#xff0c;意思就是有肯定更好&#xff0c;没有也没有太大的影响 …

穿越火线几次体验良好的游戏优化方案

文章目录 介绍救世主模式终结者模式30人生化模式挑战模式英雄级武器源武器英雄级武器皮肤英雄级武器游戏玩偶英雄级武器万化包、光效英雄级武器强化英雄级武器音效卡免费获取挑战强化武器戒指击杀效果个人竞技击杀效果人机训练模式交易所火线币快速加入跳跳乐爆头战HS间谍模式地…

做了一个日内信号可视化系统

量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 大家好&#xff0c;半年过去了。松鼠Quant计划6月内发布本年度最重要的一个策略:盘口策略。这个策略群友们的呼声很高&#xff0c;也是花了比较多时间去弄。整个策略有多个python脚本: CTP数据生成order…

如何提高浪涌保护器的使用寿命和安全性

浪涌保护是保护设施免受电气事件影响的基本要求。具体来说&#xff0c;浪涌保护器&#xff08;SPD&#xff09;旨在限制瞬态电压并转移浪涌电流以保护系统和设备。 SPD浪涌保护器必须考虑的一种现象是临时过电压&#xff08;TOV&#xff09;。传统设备处理 TOV 的方式可能会导…