交叉工具链:
gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi(内核)
arm-buildroot-linux-gnueabi_sdk-buildroot(应用)
内核:
配置文件是OK113I_linux_defconfig,实际编译时源码编译生成的中间文件在out/kernel/build中,参与编译的.config也位于out/kernel/build目录中。
大部分驱动文件位于kernel/linux-5.4/drivers中,少部分驱动在kernel/linux-5.4下的其他文件夹中,例如网桥驱动位于kernel/linux-5.4/net/bridge中。
文件系统:
我们在开发过程中经常需要在文件系统中添加一些工具,大多数工具都可以通过buildroot编译添加,在T113i的buildroot/buildroot-201902/package目录下有各种工具命令的配置。
我们在buildroot移植MQTT(mosquitto)为例进行介绍。
1、配置文件介绍
首先了解一下buildroot中移植功能时涉及到的配置文件,我们查看源码的已有配置文件,查看buildroot/buildroot-201902/package/mosquitto,里边包括几个文件:
Config.in mosquitto.mk mosquitto.hash S50mosquitto mosquitto.service
Config.in:
这个文件通过BR2_PACKAGE_** 作为开关来,告知buildroot这个包是否要参与编译,通过该文件进入图形配置界面修改编译状态。类似于内核中的Kconfig文件,修改的内容存放在out/t113_i/ok113i/longan/buildroot/.config(emmc编译路径),源文件是buildroot/buildroot-201902/configs/OK113I_linux_defconfig配置文件。
例如:package/Config.in 中写了调用关系source "package/mosquitto/Config.in",package/mosquitto/Config.in中写了BR2_PACKAGE_MOSQUITTO信息。
demo.mk:
这个文件中声明一些包的信息,比如指定包的版本,包源码下载链接,存放路径,编译规则,工具链等。编译时会按照这个文件中的下载地址和版本下载源码包到指定路径,并进行编译和文件拷贝。相当于Makefile文件。
例如mosquitto.mk,文件开头先写了软件包版本和下载地址,我们在浏览器访问该地址,可以找到对应版本的软件包。编译时,如果源码中没有该文件,就会自动下载。
demo.hash:
这个文件记录下载的源码包的hash校验码,防止下载的源码包出错。
demo.service:
此文件是为systemd服务 ,systemd开机后悔依据此文件启动demo服务,在demo.mk中会指定此文件的源路径已经安装路径。目前T113i没有使用该服务。
S50demo:
此文件类似demo.service,是目前T113i在使用的开机服务类型。其中Config.in和demo.mk是必须的,其他文件按需配置。具体配置内容可参考已有文件和实际情况书写。mosquitto已经有写好的配置文件,可以直接用,一般配置文件由项目的维护者或开发者提供,如果自己移植的文件没有配置文件,可以参考已有配置文件写一个。
USART: /dev/ttyS* 应用层通用API操作串口
波特率修改:vi OK113i-linux-sdk/kernel/linux-5.4/arch/arm/boot/dts/sun8iw20p1.dtsi
root@ok113i:/# mount -t debugfs none /sys/kernel/debug
root@ok113i:/# cat /sys/kernel/debug/clk/clk_summary
cat /sys/devices/platform/soc@3000000/2501000.uart/ctrl_info