哪吒开发板的使用初尝试

简介: 哪吒开发板的使用初尝试

【哪吒】是全志在线基于全志科技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操作系统),这里直接记录我的工作。

  1. USB转串口驱动的安装

(1)利用USB-串口线将哪吒开发板与个人PC连接后,可以在设备管理器中找到相应的设备

(2)右键选择“更新驱动程序(P)”

这里我们选择“自动搜索驱动程序(S)”。

由于我们开发TL62x时已安装了USB转串口驱动CH341SER(详见以往的博客 2.1节),所以无需再安装。

(3)点开SecureCRT软件,来选择Serial-COM3和波特率115200,可以成功连接哪吒:

  1. 查看操作系统

    输入指令:uname -a,结果为:

说明是Linux TinaLinux操作系统

可能是因为我没有插入SD卡,所以没有启动Fedora操作系统?

将SD卡读卡器插入个人PC,可以发现以下信息:

感觉是有fedora系统的。将SD卡插入哪吒后,再启动哪吒:

emmm,还是TinaLinux

  1. 移植 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配置

  1. 查看网络情况

经过查看发现无线管理工具已安装,但仍没有看到无线网卡接口名称。。。

说明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驱动试试。。

具体想参考博客:https://bbs.aw-ol.com/topic/895/%E7%BD%91%E7%BB%9C%E4%B8%93%E9%A2%981-tina-wi-fi%E6%A8%A1%E7%BB%84%E7%A7%BB%E6%A4%8D_%E5%AE%9E%E8%B7%B5%E7%AF%87

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设置自动挂载)。但即使这样,也没法安装应用到/根目录下。

全志官方的一个论坛,或许有解决方法:

https://bbs.aw-ol.com/search?term=debian&in=titlesposts

https://bbs.elecfans.com/jishu_2084208_1_1.html

相关文章
|
5月前
|
传感器 人工智能 IDE
探索电子技术的魅力:使用Arduino实现LED闪
探索电子技术的魅力:使用Arduino实现LED闪
|
5月前
|
IDE 中间件 开发工具
【瑞萨MCU】开发环境搭建之 MDK + RASC
【瑞萨MCU】开发环境搭建之 MDK + RASC
|
5月前
|
Ubuntu Linux 开发工具
【ZYNQ】那些年我们拿下了 Zynq
【ZYNQ】那些年我们拿下了 Zynq
|
Linux 芯片
嵌入式Linux系列第18篇:一个网友的引脚使用问题
嵌入式Linux系列第18篇:一个网友的引脚使用问题
|
程序员 调度 C语言
【致敬未来的攻城狮计划】--RA2E1 开发板测评(2)LED闪烁
【致敬未来的攻城狮计划】--RA2E1 开发板测评(2)LED闪烁
194 0
向龙芯2K1000板子上烧写中标麒麟系统
向龙芯2K1000板子上烧写中标麒麟系统
283 0
|
存储 人工智能 JavaScript
RISC-V大赛开发套件详解(五):D1哪吒开发板Haas-UI视频播放
RISC-V大赛开发套件详解(五):D1哪吒开发板Haas-UI视频播放
512 1
RISC-V大赛开发套件详解(五):D1哪吒开发板Haas-UI视频播放
|
编解码 缓存 NoSQL
RISC-V大赛开发套件详解(二):D1哪吒开发板Yocto介绍
RISC-V大赛开发套件详解(二):D1哪吒开发板Yocto介绍
1602 2
|
C语言 芯片
平头哥RVB2601板子上手——GPIO
CH2601的GPIO的操作方法,以及OLED图像的显示
412 0
平头哥RVB2601板子上手——GPIO