admin 管理员组文章数量: 887007
大约7~8年之前,搞了一台二手TC-2816AN-SF-L DVR整机,本身花了不到100元,当时想用来做监控录像设备用,后来一直没有找到能用上的地方,就一直放置吃灰了。
转眼到了2024年8月,突然心血来潮,翻出来折腾一番:
1.工作芯片:Hi3531(不是3531a),海思的芯片。
Arm cortex A9, V7架构, 双核,CPU主频 930M, 32K I/D cache, 256K L2 cache. 32M spi nor flash,128M nand flash. RAM 384M, 支持启动选择NOR或者Nand启动。有拨码开关。
外设接口,2个串口,其中1个是debug口,2个SATA接口,说明里可以支持到4T硬盘。JTAG口没有焊座。支持红外。有风扇散热。
2. 软件平台sdk:linux 3.0.8,uboot 2010.6. 可以搞到SDK开发包,里面有具体的硬件信息以及PC软件包,板级源码。
3. 内部图片如下,除了RTC电池没了,其它都是好的。
芯片功能框图:
对设备的软件调研了一下,发现:
- 通过Debug 串口,可以进入uboot,查看其一些启动参数。
- Nand Flash ID: K9F1G0bU0C, Nor Flash ID: MX25L25635E。 其中Nor Flash ID不在官方发布的uboot 中支持的flash 之列。
如果要重新编译烧写uboot,则需要配置相关的xslx 文件,支持新的Nor Flash。这部分可操作性难度太大。Kernel也是同理。
因此确定方案,uboot和kernel使用原设备的固件。是否可以更换rootfs,以使其具备通用Linux 主机的特点。
- 因Flash空间太小,放不下大的系统。计划使用U盘或者SATA硬盘做rootfs启动盘。
- 目前的ARM系统,基于debian 的系统较多,而且官方发布也有相应的支持,决定采用debian系统。
- 把uboot中的bootargs, root=/dev/mtdblock2 rootfstype=jffs2 改为 root=/dev/sda1 rootfstype=ext4,这样sata 就是启动盘了。
开始在做系统的过程中,先用Armbian的系统修改,发现差别太大,启动时异常太多。原因是Armbian的系统比较新,需要较高版本内核的支持。
而且Armbian是针对不同型号的开发板,分别适配的,没有Hi3531的芯片适配版本,只好用别的类似开发板的,硬件差别也比较大。最终不得不
因为差异较大而放弃。
Armbian是基于Debian系统做的,因此转向了Debian系统。因为内核比较旧,3.0.8版本,因此选用Debian Wheezy 或者Jessia,这个版本,内核
是2.6 版本的,应该可以用。
正式开始下载:
mkdir fs_debian_wheezy
sudo debootstrap --arch=armhf --foreign wheezy fs_debian_wheezy Index of /debian
mkdir fs_debian_jessie
sudo debootstrap --arch=armhf --foreign jessie fs_debian_jessie Index of /debian
在网上找到别的板子的Debian系统:
Wandboard Debian Wheezy 7.2
--------------------------------------------------------------------------------
u-boot and rootfs
a.uboot-wand.tar.xz
- md5: 24927d9f8daaccf2dfdd8c70bc19c6c9
b.debian-wheezy-7.2-rootfs-3.0.35.8-armhf.tar.xz
- md5:5ef848016a374a9272b34f9d610ad2c8
与官网上下载的对比了一下,发现Wandboard这个rootfs的文件比较多,而且同名的文件,基本上二进制是相同的,因此改使用Wandboard这个rootfs。
基本方法是把这个rootfs解压到sata硬盘的根目录下,然后在DVR上启动。
过程问题记录:
1. sata硬盘挂载失败。Unsupported feature metadata_csum
这种情况是因为mkfs.ext4的时候制定的参数,旧的内核不支持导致.
The ext4 feature (400) is the new metadata_csum feature. If this feature is enabled and old tools are used to mount the filesystem they will only be able to mount read-only.
解决方法:
sudo tune2fs -O ^metadata_csum /dev/sdb1
或者格式化的时候,
sudo mkfs.ext4 -O ^metadata_csum /dev/sdb1
2. 启动时报没有发现网卡。socket为基础的应用无法启动初始化。
问题原因是设备的网卡驱动是特有的,没有固化在内核中,需要加载.ko。
从原Nor flash 文件系统中找到ko文件,并在脚本里进行insmod,网卡可以初始化。
同理,把原设备的文件系统里的一些文件,都做到新的rootfs文件系统里,包括/etc 下的一些init rc,udev等。这些是必须使用原系统的配置初始化的。
3. 启动时,在如下log卡时间较久,3分钟左右:Waiting for /dev to be fully populated
查了些资料,不适合我的情况。没有找到原因和解决方法,好在不是严重到无法启动,暂时忽略。
4. 系统启动时,dhcp初始化,但我想使用固定IP,如何配置?
[....] Configuring network interfaces...Internet Systems Consortium DHCP Client 4.2.2
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit ISC DHCP - ISC
Listening on LPF/eth0/22:16:1b:28:d2:72
Sending on LPF/eth0/22:16:1b:28:d2:72
Sending on Socket/fallback
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 192.168.1.1
Reloading /etc/samba/smb.conf: smbd only.
/etc/resolvconf/update.d/libc: Warning: /etc/resolv.conf is not a symbolic link to /etc/resolvconf/run/resolv.conf
bound to 192.168.1.154 -- renewal in 241931 seconds.
done.
解决方法:/etc/network/interfaces 中关于primary network interface
auto eth0
iface eth0 inet dhcp //注释掉这行,就不启动dhcp了。猜测是这个设置触发了dhcp 的client启动规则。
5. ping 外网失败。
解决方法:/etc/network/interfaces 文件,关于eth0配置
dns 配置:
iface eth0 inet static
address x.x.x.x
netmask 255.255.255.0
gateway x.x.x.x
dns-nameservers x.x.x.x 0.0.0.0
详细介绍resolveconf 的dns配置方法:
NetworkConfiguration - Debian Wiki
6. 安装的armhf wheezy,但uname显示有armv7l, 是不是需要装armv7l的版本 wheezy?kennel 和 App 的编译器不同。
debian@debian-armhf:/etc/default$ uname -a
Linux debian-armhf 3.0.8 #3 SMP Mon May 21 16:13:00 CST 2012 armv7l GNU/Linux
因运行未发现问题,暂时忽略。
经过以上折腾,解决了启动中的一些关键问题,最终使用Sata硬盘做wheezy启动盘成功。可以SSH到设备上,通过apt-get安装更新软件。目标达成!
多多少少还有一些问题,比如HDMI 显示不正常,启动脚本rcS会运行2次,shutdown 无法真正断电等,还需要慢慢摸索解决。
版权声明:本文标题:把Hi3531 DVR改造成通用Debian系统 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1729070714h1314075.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论