【哪吒】是全志在线基于全志科技D1-H芯片定制的AIoT开发板,支持64bit RISC-V指令集及Linux系统。
百度网盘:https://pan.baidu.com/s/1h-yRCvY3I7fhlVL9tVIfvw?pwd=awol
官方wiki: https://d1.docs.aw-ol.com/d1_dev/
D1-H 哪吒开发板默认自带Tina Linux系统。Tina Linux是全志科技基于Linux内核开发的针对智能硬件类产品的嵌入式软件系统。
Tina Linux的软件开发工具包(Software Develop Kit, SDK)主要由构建系统、配置工具、工具链、host 工具包、目标设备应用程序、文档、脚本、linux 内核、bootloader 部分组成,其主目录为:
Tina-SDK/
├── build
├── config
├── Config.in
├── device
├── dl
├── lichee
├── Makefile
├── out
├── package
├── prebuilt
├── rules.mk
├── scripts
├── target
├── tmp
├── toolchain
└── tools
其中(1)build目录存放了一系列基于Makefile规格编写的.mk文件,定义了关于工具链、linux kernel、系统固件等关键代码的编译规则。
(2)lichee目录主要存放bootloader、linux内核、DSP等代码。
(3)prebuild目录存放了预编译交叉器。
……
在官方wiki中,提出通过Repo工具来管理和获取SDK源码,实际上官方已经在百度网盘中提供了SDK源码的压缩包【sdk 2.1】,所以我们忽略。
接下来,基于SDK,我们可以移植Tina Linux操作系统。
1 操作系统移植
为了基于SDK将内核编译并烧录到开发板中,需要依次完成以下几个步骤:
配置内核:在SDK中,你可以通过配置工具(通常是make menuconfig等工具)定制Linux内核,根据开发板的硬件特性和项目需求选择相应的模块和驱动。
编译内核:在配置好内核后,使用SDK提供的编译系统(如Makefile)编译内核。编译过程会生成内核镜像文件(如zImage或uImage)。
编译文件系统和其他组件:除了内核,通常还需要编译文件系统、bootloader和应用程序等,这些都可以通过SDK中的构建工具链完成。
将内核和其他固件烧录到开发板:
可以通过串口、USB、TF卡等方式,将编译好的内核镜像、bootloader、文件系统等烧录到开发板的存储设备中(如eMMC、NAND、SD卡等)。
烧录工具可以是开发板厂家提供的烧录工具,或者通过U-Boot等bootloader中的命令进行烧录。
启动开发板:烧录完成后,开发板会从存储设备中加载bootloader,并引导Linux内核启动,从而进入系统。
在官方的wiki中,提供了编译和烧录(烧写)的有关目录,这里忽略。
同时,在官方提供的百度网盘中,也在【使用视频-哪吒开发板8.8寸使用视频】中提供了具体编译和烧录的演示视频。由于我是继续前面同学的工作(已烧录Fedora操作系统),这里直接记录我的工作。
- USB转串口驱动的安装
(1)利用USB-串口线将哪吒开发板与个人PC连接后,可以在设备管理器中找到相应的设备
(2)右键选择“更新驱动程序(P)”
这里我们选择“自动搜索驱动程序(S)”。
由于我们开发TL62x时已安装了USB转串口驱动CH341SER(详见以往的博客 2.1节),所以无需再安装。
(3)点开SecureCRT软件,来选择Serial-COM3和波特率115200,可以成功连接哪吒:
查看操作系统
输入指令:uname -a,结果为:
说明是Linux TinaLinux操作系统
可能是因为我没有插入SD卡,所以没有启动Fedora操作系统?
将SD卡读卡器插入个人PC,可以发现以下信息:
感觉是有fedora系统的。将SD卡插入哪吒后,再启动哪吒:
emmm,还是TinaLinux
- 移植 Debian by Sipeed
(1)在官方wiki上下载debian的镜像,下载后如图所示
(2)利用PhoenixCard烧卡,如下图所示的配置
{spa.libero-service.com]
{spa.zyt360.com]
{spa.firesonextintores.com]
{spa.bbsever.com]
{spa.plustruth.com]
{spa.sqjsbz.cn]
{spa.gzwlxh.com]
要烧录几分钟,耐心等待
(3)开机,输入用户名密码
登录账号为 sipeed 或者 root, 密码为 licheepi
检查操作系统
移植成功!
2 WiFi配置
- 查看网络情况
经过查看发现无线管理工具已安装,但仍没有看到无线网卡接口名称。。。
说明wifi硬件存在,但相关驱动未完全初始化或配置不正确,尝试利用lsmod命令查看是否加载了
上述结果说明没有和xradio wifi有关的驱动,尝试利用modprobe命令手动加载
报错显示加载 WiFi 模块时,出现了内存分配问题,导致驱动初始化失败
利用free -h命令,发现系统有1.9GB内容,其中有1.6GB处于空闲,因此不是内存不足导致的,如下。
2.1 WiFi模块驱动初始化失败问题
执行 modinfo xr829 来获取关于WiFi模块xr829的详细信息
说明xr829 驱动程序的位置是 /lib/modules/5.4.61/kernel/xr829.ko。它是一个 GPL 许可的 IEEE 802.11 子系统驱动,属于 XRadioTech 的 WLAN 驱动。
如果你需要进一步调试这个驱动程序或检查其依赖项,可以注意以下几点:
依赖关系:目前 depends 字段是空的,表示没有其他模块依赖于这个驱动
内核版本兼容性:vermagic 字段显示该模块是为内核版本 5.4.61 编译的,确保你的内核版本与模块匹配。
检查内核版本发现兼容,说明不是这个问题。
实在不知道问题,而且报错没有任何信息量,所以打算自己重新编译这个wifi驱动试试。。
2.2 官方提供的debian操作系统的分区问题
但是接着发现了一个问题:根文件系统大小为3.6GB,而且已经用了2.8G,和SD卡的32G容量不符合,如下:
另一方面,将SD卡通过读卡器插入个人PC后,发现弹出的E盘只显示 7.95MB,这可能是因为
引导分区:
许多嵌入式系统(例如开发板)在 SD 卡上使用一个较小的引导分区,用来存放启动文件或固件。这个分区通常很小,几MB大小,而系统的其余部分存放在另一个更大的分区中,通常是 Linux 文件系统(例如 ext4),这类分区在 Windows 上通常不可见。
Windows 不识别 Linux 分区:
Windows 操作系统默认无法识别 Linux 使用的文件系统格式(如 ext4、btrfs 等)。因此,虽然你的 SD 卡可能有一个较大的 ext4 分区,Windows 只会显示第一个 FAT32 或 FAT16 格式的引导分区。剩余的大部分 SD 卡空间无法直接在 Windows 文件资源管理器中看到。
分区表问题:
在一些情况下,SD 卡的分区表可能存在问题,导致某些分区无法正确识别。不过这种情况较少见,更可能是系统设置的问题。
可能的解决方案包括:
如果在 Linux 系统下查看 SD 卡的分区,可以使用 lsblk 或 fdisk -l 命令来查看所有分区。
在 Windows 系统下,可以使用第三方工具(例如 MiniTool Partition Wizard 或 DiskGenius)来查看 SD 卡的所有分区,甚至可以读取和操作 Linux 分区。
所以我们在ubuntu虚拟机中查看分区:
(1)将虚拟机从主机接入虚拟机,如下:
(2)虚拟机命令行中查看SD 卡的分区情况,如下所示。sdb展示了SD卡的分区情况,共29.7G,但是分了八个区, sdb1,...,sdb8。
进一步利用mount挂载命令检查各个分区的作用:
说明,sdb1是引导分区,包含启动时需要的文件,具体包括:
bootlogo.bmp:系统启动时显示的引导画面。
magic.bin:某种配置文件或特定格式的二进制文件。
System Volume Information:这个文件夹通常是 Windows 系统用来存放恢复信息的,但在 Linux 系统中也可能存在,具体情况可以忽略。
其他分区(除了sdb1和sdb7)都没有正确的文件系统,或者分区没有被格式化。。。
而分区sdb7则包含了完整的操作系统根文件系统,包括了操作系统运行所需的各种文件和目录,这些都是在移植操作系统时写入该分区的。
注意到sdb7有8GB,但哪吒操作系统根文件系统只有3.6GB,这是因为:
根文件系统的实际大小:即使为操作系统分配了 8GB 的分区,根文件系统的实际使用可能因为多种原因而小于该分区的总大小。这可能是因为:
操作系统的镜像本身只占用了 3.6GB 的空间。
剩余的空间可能未被分配或未格式化为文件系统。
文件系统格式:在创建文件系统时,会有一些元数据和保留块,这可能会占用一部分空间。因此,虽然分区的大小是 8GB,但实际可用的根文件系统可能会少于此值。
由于 /dev/root 只有 3.6GB,实际上你只能在此根文件系统中安装和使用大约 3.6GB 的应用程序和文件。。。
总结:分区一般是在操作系统移植到 SD 卡的时候就被确定了。操作系统镜像(比如树莓派的镜像)会自带一套分区表,这些分区就会在你刷入镜像时自动配置。虽然SD 卡是 32G,但它可能会先给自己划出几个特定的分区来存放系统文件、引导文件等,剩下的空间就会被安排成其他分区或留作未分配空间。可以利用一些分区调整工具修改分区,或者直接重新移植操作系统镜像。
{spa.gzwlxh.com]
{spa.shuheguzhen.com]
{spa.fjwtwl.com]
{spa.fbyac.com]
{spa.yxsd-door.com]
{spa.zsgsdq.com]
哪吒官方提供的操作系统镜像太坑了,就划分了3.6GB的文件系统。如果要利用其他的六个分区,还得每次系统启动后把它们挂载,每次关机前取消挂载(或者在/etc/fstab设置自动挂载)。但即使这样,也没法安装应用到/根目录下。
全志官方的一个论坛,或许有解决方法: