在全志T113-S3的TinaLinux上添加驱动支持

在全志T113-S3的TinaLinux上添加驱动支持

Author: kkl

大家看这篇文章之前,要先去看我先前的文章全志T113-S3的TinaLinux编译流程记录搭建好基本环境,戳这儿直接跳转:)


写在前面

T113-s3全志的一款非常不错的能够跑Linux系统的Soc,该芯片采用双核A7主频高达1.2GHz,具备高效能低功耗的特点,片上内存128MB支持硬件解码,和D1s Pin to Pin,支持相互替换支持全志提供的Tina Linux SDK,文档齐全,对于DIY玩家来说用于制作一些带显示屏的小设备是非常完美了。

前阵子在“海鲜市场”低价入了韦东山的T113-s3的开发板,经过一番摸索以后发现了TinaLinux这个新奇的东西,听说是全志基于Openwrt自研的系统(被戏谑为全志家的小女儿。

自从入坑以后,折腾折腾,就想加入更多的功能,加入自定义的外设,这个时候就不得不自己手动地修改设备树修改驱动啦。但是好在Tina-Linux已经为我们加入新的驱动做了许多的工作,于是我们今天所需完成的事情其实非常轻松,咱们来为T113s3添加一个gpio-key驱动和一个xr829驱动吧!

本篇文章将简述如何迅速地在Tina Linux添加驱动支持。

我的环境

  • 虚拟机:VirtualBox Ubuntu 18.04
  • 开发板:100ASK_T113-PRO
  • Tina-Linux版本:linux-5.4

开始

添加gpio-key驱动

这里的100ask原文档的内容:->戳这里跳转下载:P

下面咱们来复现一下,原理原文档中讲的很清晰,我们跳过直接开始操作:

增加设备节点

修改设备树文件,使用Vscode打开以下路径的设备树文件,code ~/tina-d1-h/device/config/chips/t113/configs/100ask/linux/board.dts

新增gpio-keys的设备配置,开发板上的User-Key使用PB4引脚(注意要在根节点下添加,添加完成后,保存退出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
gpio-keys {
compatible = "gpio-keys";
status = "okay";
vol-down-key {
gpios = <&pio PB 4 GPIO_ACTIVE_LOW>;
linux,code = <114>;
label = "volume down";
debounce-interval = <10>;
wakeup-source = <0x1>;
};
};

// compatible:用于匹配驱动
// status:是否加载设备
// vol-down-key:每一个按键都是单独的一份配置,需要分别区分开来
// gpios:GPIO 口配置
// linux,code:这个按键对应的 input 键值
// label:单个按键对应的标签
// debounce-interval:消抖时间,单位为us
// wakeup-source:是否作为唤醒源,配置了这个项的按键可以作为唤醒源唤醒系统

board.dts add gpio-keys

注意:添加节点之后请检查整个设备中是否存在其他设备使用PB4引脚的问题!

make sure Pin-PB4 is available

增加内核模块

Tina-Linux SDK中,Kernel模块和SDK直接做了强关联,原厂默认已经帮你配置好了常用模
块的依赖关系(别人帮我们写好了常见的驱动模块,比方说支持interrupt-key, poll-key驱动文件如下:

  • gpio poll key: lichee/linux-5.4/drivers/input/keyboard/gpio-keys-polled.c
  • interrupt key: lichee/linux-5.4/drivers/input/keyboard/gpio-keys.c

于是我们只需要配置就好啦,执行make menuconfig,配置选项:

Kernel modules > Input modules > kmod-input-gpio-keys

menuconfig

选中后,保存并退出,执行make命令,等待编译完成,打包烧录一气呵成,我们已经非常熟练了,还不会的戳这里w=w

开发板验证功能
  • 查看是否出现新的input设备节点:cat /proc/bus/input/devices注意你的节点可能会跟示例中不一样,可能是event1或者其他,照常操作对其就行。

  • 通过cat命令去捕获event3的操作:先输入命令行cat /dev/input/event3,然后按下User-Key按键,就能看见系统打印出来的信息(因为没有专门的用户程序去操作,所以看到的数据是乱码,正常现象,到这里咱们的按键驱动就打好啦!

添加xr829驱动(WiFi & BLE

这段的100ask原文档支持:->戳这里:P

read-only system

其实100ask的T113s3这个tina-linux的镜像是适配了xr829驱动的,但是由于rootfs设置成了只可读系统,于是无法正常的初始化wpa_supplicant。现在我们就要解决这个只可读的问题,需要把原来的根文件系统 (squashfs) 改为 (ext4),于是我们需要对内核进行以下步骤的修改:

配置准备环境
  1. 进入TinaLinux-SDK根目录cd ~/tina-d1-h
  2. source build/envsetup.sh
  3. lunch,并选择T113平台名称
首先对kernel_menuconfig进行一些修改

执行make kernel_menuconfig

>File Systems

make kernel_menuconfig

menuconfig进行一些修改

执行make menuconfig

>Target Images

make menuconfig
make menuconfig
编译内核与打包镜像(make & pack

如果make过程中遇到rootfs空间太小,无法分配内存的问题:可以回到menuconfig修改大一些> Target Images > Root filesystem partition size(in MB)

如果pack过程中遇到下图问题,可以执行gedit ~/tina-d1-h/device/config/chips/t113/configs/100ask/sys_partition.fex,修改大一些对应的分区容量:

dl包过大的报错
dl包过大的报错
烧录与调试

烧录的方法咱就不多说啦:戳这儿直接跳转:)

下面我们来说说如何在开发板上调试WiFi功能:

  • 手动加载xr829驱动模块:insmod xr829.ko

  • 启动wpa_supplicant:/etc/init.d/wpa_supplicant start

  • 执行ps,查看 wpa_supplicant 是否启动成功(如下图,如果没有下图显示wpa_supplicant进程正在运行,说明启动失败:

  • 可以尝试手动启动wpa_supplicant:wpa_supplicant -i wlan0 -Dnl80211 -c/etc/wifi/wpa_supplicant.conf -O /etc/wifi/sockets -B

  • 确认wpa_supplicant启动成功,可以进行WiFi扫描测试验证一下效果:wifi_scan_results_test

  • WiFi联网测试,wifi_connect_ap_test <ssid> <pwd>wifi_connect_ap_test HUGO 12345678

  • 查看 ip 地址:ifconfig

  • ping 百度测试:ping www.baidu.com

FAQ

Q:rootfs 已经更换为 ext4,为什么开发板卡在“无法加载根文件系统”这儿了(如图?

A:没有进行make kernel_menuconfig -> File Systems -> <*> The Extended 4 (ext4) filesystem

adb命令(这里临时穿插一条,不然以后找不到

  • adb devices,该命令用于查找已经连接上Ubuntu系统上的adb设备.

  • adb push,该命令用于将Ubuntu系统上的文件上传到开发板,比如:

1
adb push demo  /tmp

这表示将Ubuntu系统内当前目录下的demo文件上传到开发板的/tmp目录下.

  • adb pull,该命令用于从开发板获取文件到Ubuntu系统上,比如:
1
adb pull /tmp/demo .

这表示下载开发板中的/tmp/demo文件到当前目录下.

  • adb shell,该命令用于打开开发板的命令行.

写在后面

鸣谢以下文章:

驱动添加过程的问题答疑:

100ask文档参考:

其他:



在全志T113-S3的TinaLinux上添加驱动支持
https://zhangkeliang0627.github.io/2025/01/20/在全志T113-S3的TinaLinux上添加驱动支持/README/
Author
Zhang-keliang
Posted on
January 20, 2025
Licensed under