海思SS928-流媒体开发入门指南

本文详细介绍了在海思SS928嵌入式开发中,包括固件编译烧写、文件系统调整、IP和网口配置、SSH及Zfile服务部署等内容,为初学者提供实用的入门教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一章、系统烧写及初始配置

目录

前言

一、固件编译和烧写

二、文件系统存储空间调整

三、系统ip及网口配置

1.系统IP配置

情况一

情况二,启动时 未输出 /etc/init.d/S80network Log信息

2.网口状态查看及配置

四、ssh及 zfile服务部署配置

总结


前言

虽然从事研发好多年,但最近刚接触linux嵌入式开发,有机会使用海思的SS928进行流媒体相关功能的开发,记录一下使用过程,和大家共同学习。


一、固件编译和烧写

固件编译和烧写可以参考论坛官网的专栏文章

SS928/SD3403 —— 教你快速入门_专栏_易百纳技术社区

注意 用ToolPlatform工具烧写时,选择“烧写eMMC”选项-选择分区表文件烧写(因为厂家提供的是eMMC的boot文件),点击“烧写”后需要断电重插,第二块核心板插入第一套的开发板后reset按钮无效,需要拔/插电源才能烧写成功。

注意:有时候遇到网口烧录失败,需要排查下烧录工具中的 phyaddr地址 uboot可能用的是eth1网口,网线需要接到开发板的eth1口,可以插拔网线切换试下不需要重新烧录,网络通了 可以自动执行。

烧写成功后,用串口工具连接ss928,分别执行如下四条指令进入linux系统,就可以上电进入linux系统了。

setenv bootargs 'mem=132928K console=ttyAMA0,115200 clk_ignore_unused root=/dev/mmcblk0p3 rootfstype=ext4 rw rootwait blkdevparts=mmcblk0:1M(boot),12M(kernel),128M(rootfs)';
setenv bootcmd 'mmc read 0 0x42000000 0x800 0x6000;bootm 0x42000000';
sa
re

二、文件系统存储空间调整

在烧录固件后,芯片中文件系统通常和文件系统镜像一样大,但是EMMC中还空余巨大的空间,需要通过修改bootargs的分区参数,将剩余的空间分配给文件系统镜像所在的分区。

  • rom磁盘空间调整

可查看专栏文章进行配置

开发板文件系统大小调整_专栏_易百纳技术社区

使用emmc为启动介质的版本emmc采用mtd分区,首先需要通过修改bootargs的分区参数,将剩余的空间分配给文件系统镜像所在的分区,最后的"-"表示使用剩余全部空间。

setenv bootargs 'mem=512M console=ttyAMA0,115200 clk_ignore_unused root=/dev/mmcblk0p3 rootfstype=ext4 rw rootwait blkdevparts=mmcblk0:1M(boot),12M(kernel),-(rootfs)';
//存储配置
sa
//重启系统
re

设置好启动参数后启动进入系统使用resize2fs(将移植后的resize2fs文件拷入芯片)命令重新设置分区中文件系统的大小。

resize2fs /dev/mmcblk0p3

使用df命令重新查看分区,是否已经扩展成功

df -hm -a
  • ram内存分配调整

板载4/8G的ram内存,但是设置uboot时,只分配给了系统很小的可用内存,可以采用如下方法设置;

  • 烧写系统后 uboot环境中 执行了 setenv bootargs 'mem=132928K ...,可以将 bootargs 'mem=132928K 替换为 512M 增大系统可用的ram内存空间
  • 修改/ko/loab*的一个文件,将系统内存大小设置为和bootargs一致即可;(实测未设置/ko下面的文件也生效了,设置bootarts后 重启系统 ko/loadb*下面的配置自动修改了)

三、系统ip及网口配置

1.系统IP配置

  • 情况一

系统启动后,部分Boot 默认系统会在启动时 Log出ip地址和网络配置文件,如下:

[RCS]: /etc/init.d/S80network
     IP: 192.168.X.X
GATEWAY: 192.168.X.X
...

这种情况 直接编辑 /etc/init.d/S80network 文件修改ip和网关就可以;

  • 情况二,启动时 未输出 /etc/init.d/S80network Log信息

可以直接在文件/etc/init.d/rcS中修改,添加ifconfig 设置如下,系统启动时会设置ip等信息

#! /bin/sh
/bin/mount -a
ifconfig eth0 192.168.1.13 netmask 255.255.255.0
# 没添加这行的话就只能ping通局域网里面的ip,但不能ping通外网
route add default gw 192.168.1.1

注:如果 /etc/init.d/rcS 有调用如情况一的network文件 在rcS种配置的会被再次覆盖,设置无效

2.网口状态查看及配置

SS928有两个外接网口 eth0和eth1,如果驱动有问题,且eth0接了光口,自协商没法协商到千兆,然后系统启动后用ethtool强制设置成了千兆,就无法兼容百兆的网络接口和设备,可以输入命令查看下。

//查看网卡状态
dmesg | grep gmac

//输出如下
gmac_v200 10290000.ethernet: invalid resource
gmac_v200 10290000.ethernet (unnamed net_device) (uninitialized): using random MAC address e2:9c:b7:6e:c6:e9
gmac_v200 102a0000.ethernet: invalid resource
gmac_v200 102a0000.ethernet (unnamed net_device) (uninitialized): using random MAC address 06:cb:65:2e:be:97
gmac_v200 102a0000.ethernet eth1: Link is Up - 100Mbps/Full - flow control rx/tx
gmac_v200 102a0000.ethernet eth1: Link is Down

或用ethtool命令查看

~ # ethtool eth0
Settings for eth0:
        Supported ports: [ TP AUI BNC MII FIBRE ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Full 
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  1000baseT/Full 
        Advertised pause frame use: Symmetric
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: 1000Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 1
        Transceiver: external
        Auto-negotiation: off
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes

设置 适配只支持100M网口的设备,可以写入/etc/rc.d/rc 文件中开机执行脚本

//ethtool来禁用网卡自适应特性,必须同时指定链路速度100M和全双工工作模式
ethtool -s eth0 speed 100 duplex full autoneg off

若要eth0重启后这些配置依然生效,亦可修改文件/etc/sysconfig/network-scripts/ifcfg-eth0 在文件中添加: ETHTOOL_OPTS="speed 100 duplex full autoneg off";但是海思没有sysconfig 等网卡配置文件,不知到ethtool的配置该放哪里;

//可以用 ifconfig 命令 临时 禁用或者启用某个 网口,启用 up
ifconfig eth1 down

DNS配置,直接编辑(没有的话会自动创建),保存 /etc/resolv.conf 文件即可

//编辑或生成dns配置文件
vi /etc/resolv.conf
//输入dns地址 后保存
nameserver 8.8.8.8
nameserver 114.114.114.114

如果直接编辑或生成resolv.conf文件 无效则先执行 如下命令,会自动生成该文件

//替换为对应的 网口号即可,运行后可能网络无法访问,重启系统即可
udhcpc -i eth2

old绿联USB网卡驱动是 ax88179_178a (海思linux默认开启了)
新绿联 type-c 的 网卡驱动是 RTL8152,需要在 linux内核编译前在menuconfig中(搜索8152或r8152) 开启该驱动后再编译内核,启用该驱动

四、ssh及 zfile服务部署配置

可参考技术论坛   

SSH服务器移植_专栏_易百纳技术社区

需要注意,将 的 openssl 和zlib服务 make install 后的所有子文件夹,如include、bin等文件夹都拷贝到根目录,lib 拷贝到lib64目录,

代码如下(示例):

# 拷贝ssh相关文件
cp ~/nfs/openssh/usr / -r
cp ~/nfs/openssh/var / -r
cp ~/nfs/openssh/etc/ssh /usr/local/etc -r

# 拷贝库 libz.so.1文件在PC端的install/zlib/lib下
cp ~/nfs/libz.so.1 /lib64

# 添加sshd用户 sshd 是账户 x是密码 74是id 不通账户不可重复
echo "sshd:x:74:74::/var/empty/sshd:/sbin/nologin" >> /etc/passwd

# 修改PATH环境变量
echo "export PATH=$PATH:/usr/local/bin:/usr/local/sbin" >> /etc/prefile
source /etc/prefile

# 生成host密钥,可以不执行这四条命令
ssh-keygen -t rsa -f /usr/local/etc/ssh_host_rsa_key
ssh-keygen -t dsa -f /usr/local/etc/ssh_host_dsa_key
ssh-keygen -t ecdsa -f /usr/local/etc/ssh_host_ecdsa_key
ssh-keygen -t ed25519 -f /usr/local/etc/ssh_host_ed25519_key

# 重制密钥,切换到 /etc/ssh 路径下执行,可直接生成上面的key
ssh-keygen -A
# 启动ssh服务,先执行su 再启动
/usr/local/sbin/sshd
# 如遇 启动无响应可能启动失败,需要 先结束进程,再启动
ps -aux|grep sshd|grep -v grep

# 修改root 密码,然后修改 sshd的配置文件运行root账号登录
# 运行 passwd accountName -a des 可以修改指定的账号密码(-a修改账号算法 为 des)
passwd -a des

sshd的配置文件的位置:/usr/local/etc/sshd_config,但是实测 配置文件和key 用的都是 /etc/ssh路径下的,实测 系统重启后移植的sshd服务 启动失败,需要等待10分钟左右才能成功,故根据厂家重新提供的.deb安装包重新安装,如下:

论坛ssh安装文档参考

基于SS928 openssh的安装_专栏_易百纳技术社区

SSH 安装包下载地址

SS928(SD3403) opensshdeb适配包_资料_易百纳技术社区

//要使用dpkg功能必须创建dpkg需要的目录以及文件
mkdir -p /var/lib/dpkg
mkdir -p /var/lib/dpkg/info
touch /var/lib/dpkg/status

将下载的 openssh.tar.gz 安装包拷贝到ss928芯片中,解压,运行busybox脚本

//解压
tar -zxvf openssh.tar.gz -C /home/ssh_package
cd /home/ssh_package
//安装当前路径下所有的.deb文件
./busybox dpkg -i *.deb

安装后使用dpkg -l命令查看软件包状态

输出如下:

    Name           Version
+++-==============-==============
ii  ebaina-openssh 9.3p1
ii  ebaina-zlib    1.2.13
ii  ebaina-openssl 1.1.1l
ii  ebaina-haveged 1.9.2

然后配置:

  1. 配置系统密码
    输入passwd命令,根据提示输入新密码即可
  2. 配置允许root用户登录
    /etc/ssh/sshd_config文件中将#PermitRootLogin prohibit-password改为PermitRootLogin yes
  3. 配置允许密码登录
    /etc/ssh/sshd_config文件中将#PasswordAuthentication yes选项打开PasswordAuthentication yes

五、Usart1串口1配置

海思SS928 4pin的串口一 地址 /dev/ttyAMA1,默认复用为了GPIO口,需要修改寄存器地址,将该接口配置为usart1串口功能,可以在系统初始化时执行如下脚本

//修改 usart1 接口 为 串口1功能(默认成了 gpio口),需要在启动后执行 如下两条命令
bspmm 0x102f0060 0x1201
bspmm 0x102f0064 0x1201

总结

以上就是本章节要讲的内容,本文仅仅简单介绍了固件及系统烧录、ip、存储扩展配置及ssh服务的部署,其中涉及一些常用的linux指令,记录一下分享给大家,也加深自己的记忆,下一章会讲到海思inux设备的取流、推流的相关知识点。

### 关于 SS928V100 开发分区文件的相关资料 SS928V100 是基于海思芯片平台的一个版本号,通常用于嵌入式设备的开发环境配置。以下是关于其开发分区文件下载及相关文档的信息: #### 1. 脚本路径调整 在 osdrv 目录下执行脚本时,需要根据实际项目需求修改路径参数。例如,在构建 UBI 镜像的过程中,可以参考以下命令来生成镜像文件[^1]: ```bash ./tools/pc/ubi_sh/mkubiimg.sh ss528v100 2k 128k pub/rootfs_glibc_arm64 256M pub/bin/pc ``` 此命令中的 `ss528v100` 表示目标硬件型号,而其他参数则定义了页面大小、块大小以及根文件系统的具体位置。 --- #### 2. 获取 Root 权限 出于安全性考虑,某些操作系统默认禁用了 root 用户访问权限。如果需要对系统进行深入操作,则可以通过开启开发者模式并手动赋予 root 权限[^2]。这一步骤对于调试和自定义编译非常重要。 --- #### 3. 海思官方文档支持 针对海思 SS928 系列产品的流媒体开发入门指南提供了详细的 API 和工具链说明[^5]。这些资源可以帮助开发者了解如何适配特定硬件架构下的软件栈,并完成固件烧写等相关工作流程。 此外,还可以通过查询类似的包管理器输出信息进一步确认依赖项列表及其版本号: ``` Name Version +++------------ -------------- ii ebaina-openssh 9.3p1 ii ebaina-zlib 1.2.13 ii ebaina-openssl 1.1.1l ii ebaina-haveged 1.9.2 ``` 上述表格展示了当前环境中已安装的基础库组件状态,这对于验证兼容性和排查问题非常有帮助。 --- #### 4. RDB 快照机制简介 (补充知识点) 虽然 Redis 的持久化功能并非直接关联到 SS928V100 的开发过程,但如果涉及缓存服务部署场景的话,理解触发条件仍然很有必要[^4]: - 当满足指定时间间隔或者数据变更次数阈值时自动保存; - 使用 `SAVE` 或者 `BGSAVE` 命令手工发起快照创建动作; 检查现有 `.rdb` 文件完整性可借助专用工具实现: ```bash redis-check-rdb /myredis/dumpfiles/dump6379.rdb ``` --- #### 总结 综上所述,要找到与 SS928V100 开发分区文件相关的材料可以从以下几个方面入手:一是查阅对应版本的制作教程(如 mkubiimg.sh 参数详解),二是激活必要的管理员控制权以便探索底层结构,三是参照厂商发布的指导手册学习更多高级特性应用案例。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值