前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于AM335X开发板 (ARM Cortex-A8)——Linux系统使用手册 (中)

基于AM335X开发板 (ARM Cortex-A8)——Linux系统使用手册 (中)

原创
作者头像
创龙科技Tronlong
发布2022-06-24 09:52:24
1.1K0
发布2022-06-24 09:52:24
举报

本篇文章主要讲解嵌入式板卡中Linux系统是如何正确测试、使用的,其中内容包含有U-Boot编译、U-Boot命令和环境变量说明、Linux内核编译、xtra驱动编译、系统信息查询、程序开机自启动说明、NFS使用说明、TFTP使用说明、TFTP + NFS的系统启动测试说明、inux设备驱动说明等,其中案例源码部分公开。

此外,本篇文章测试板卡采用创龙科技TL335x-EVM-S开发板,它是一款基于TI Sitara系列AM3352/AM3354/AM3359 ARM Cortex-A8高性能低功耗处理器设计的开发板,其接口资源丰富,引出双路千兆网口、LCD、HDMI、GPMC、CAN等接口,方便用户快速进行产品方案评估与技术预研,应用在通讯管理、数据采集、人机交互、运动控制、智能电力等典型领域。

前 言

本说明文档适用开发环境如下:

Windows开发环境:Windows 7 64bit、Windows 10 64bit

Linux开发环境:Ubuntu 14.04.3 64bit

虚拟机:VMware15.1.0

U-Boot:U-Boot-2017.01

Kernel:Linux-4.9.65、Linux-RT-4.9.65

Linux Processor SDK:ti-processor-sdk-linux-rt-am335x-evm-04.03.00.05

Linux系统软件相关文件在产品资料“4-软件资料\Linux\”目录下,包括了U-Boot、Kernel、Filesystem和Makesdboot四个文件夹(具体如下表)。系统支持Linux内核和Linux-RT实时内核,默认提供的是Linux内核。如对系统实时性要求较高,可切换为Linux-RT内核。

extra驱动编译

本地首次需重新编译extra驱动使其与新的内核镜像版本一致。如本地再次配置与编译生成内核镜像时,则无须同时编译extra驱动,即extra驱动仅需重新编译一次。

extra驱动源码包含在Linux Processer SDK中,如下为部分使用到的extra驱动的说明。

表 6

extra驱动

说明

cryptodev

crypto加密算法调用

ti-sgx-ddk-km

GPU初始化

uio-module-drv

mmap、中断等上层应用接口调用

编译extra驱动

进入Linux Processer SDK包安装目录,执行如下命令打开Rules.make文件,按照如下说明修改DESTDIR和LINUXKERNEL_INSTALL_DIR参数值。

Host# cd /home/tronlong/ti-processor-sdk-linux-rt-am335x-evm-04.03.00.05/

Host# ls board-support/extra-drivers/

Host# sudo vi Rules.make

图 30

DESTDIR=/media/tronlong/rootfs //指定extra驱动安装路径为文件系统所在目录

LINUXKERNEL_INSTALL_DIR=/home/tronlong/AM335x/Kernel/Linux-4.9.65 //指定编译extra驱动所依赖的内核源码安装目录

图 31

在编译extra驱动时,默认情况下会再次编译extra驱动所依赖的Linux内核,为了缩短编译时间,请按照如下方法修改Makefile文件,从而使得在编译extra驱动时不用再次编译Linux内核。

执行如下命令打开Makefile文件,分别将cryptodev、ti-sgx-ddk-km、uio-module-drv驱动所在位置的linux字符串删除,修改完成后保存。

Host# sudo vi Makefile

图 32

图 33

图 34

图 35

在Linux Processor SDK安装目录下,依次执行如下命令编译extra驱动。

Host# sudo make cryptodev

图 36

Host# sudo make uio-module-drv

图 37

Host# sudo make ti-sgx-ddk-km

图 38

安装extra驱动

将Linux系统启动卡通过读卡器插入PC机,并将其成功挂载到Ubuntu系统,本次操作演示的Linux系统启动卡挂载路径为“/media/tronlong/rootfs/”。在Linux Processor SDK安装目录下,依次执行如下命令,将extra驱动安装到Linux系统启动卡文件系统rootfs分区“/lib/modules/<kernel_release>/extra/”目录下。如本地没有使用版本管理工具,<kernel_release>一般为4.9.65-rt23。

Host# sudo make cryptodev_install

Host# sudo make uio-module-drv_install

Host# sudo make ti-sgx-ddk-km_install

图 39

图 40

图 41

执行如下命令,查看是否成功安装到Linux系统启动卡rootfs分区“/lib/modules/<kernel_release>/extra/”目录。

Host# ls /media/tronlong/rootfs/lib/modules/4.9.65-rt23/extra/

图 42

系统信息查询

评估板系统启动后,会自动登录root用户,可参照如下方法查询系统相关信息。

执行如下命令查看操作系统登录欢迎信息。

Target# cat /etc/issue

图 43

操作系统登录欢迎信息记录在"/etc/issue"文件,直接修改此文件内容改变系统登录信息。当一个网络用户或通过串口登录系统上时,"/etc/issue"文件内容显示在login提示符之前,而"/etc/motd"文件内容显示在用户成功登录系统之后。

执行如下命令查看计算机名字。

Target# hostname

图 44

主机名字记录在"/etc/hostname"里面,可修改此文件内容改变主机名字。

执行如下命令可查看当前Linux内核版本,详细信息解析如下表。

Target# cat /proc/version

图 45 Linux内核

图 46 Linux-RT内核

表 7

内容

说明

4.9.65-rt23

内核版本

gfc51450

版本管理系列号

Linaro GCC 6.2-2016.11

交叉编译工具版本

#1

清理内核后编译次数

SMP PREEMPT/SMP PREEMPT RT

SMP PREEMPT:Linux内核SMP PREEMPT RT:Linux-RT内核

xxxxx CST 2021

内核镜像编译时间

执行“lsb_release -r”命令可查看当前文件系统版本信息。

Target# lsb_release -r

图 47

执行如下命令查看CPU使用率。

Target# top

图 48

执行如下命令查看内存使用情况。

Target# cat /proc/meminfo

图 49

执行如下命令查看系统环境变量信息。

Target# env

图 50

执行如下命令可查看文件系统支持库的存放目录。

Target# ls /usr/lib/

图 51

分别执行如下命令,查看内核镜像、设备树文件、内核模块和extra驱动存放目录。

Target# ls /boot/

Target# ls /lib/modules/4.9.65-rt23-gfc51450/kernel/

Target# ls /lib/modules/4.9.65-rt23-gfc51450/extra/

图 52

  1. 执行lsmod命令可查看当前系统状态下,已加载的内核模块和extra驱动。

Target# lsmod

图 53

程序开机自启动说明

在Linux系统下,实现程序开机自启动有init进程方式和systemd服务方式。其中systemd方式更加灵活、高效,它为系统的启动和管理提供一套完整的解决方案。本章节主要演示通过systemd服务方式,实现一个脚本程序开机自启动的设置方法。

评估板上电进入文件系统,执行如下命令新建一个helloworld.sh脚本,并赋予脚本可执行权限。

Target# vi helloworld.sh

Target# chmod 777 helloworld.sh

图 54

在脚本中添加如下内容,脚本内容可根据实际需要进行替换修改。

#!/bin/bash

echo ""

echo "Hello World!"

echo ""

echo "www.tronlong.com"

进入文件系统“/lib/systemd/system/”目录,新建一个自启动的systemd服务配置文件helloworld.service。

Target# cd /lib/systemd/system/

Target# vi helloworld.service

图 55

在helloworld.service文件中添加如下内容,实际应用中请根据实际需要进行修改。其中Description为systemd服务的简短描述,ExecStartPre为systemd服务的打印信息,ExecStart为启动当前服务的命令。

[Unit]

Description=helloworld

After=basic.service X.service thermal-zone-init.service

[Service]

Environment=DISPLAY=0:0

ExecStartPre=/bin/echo "****Start to run helloworld.service****"

ExecStart=/home/root/helloworld.sh

StandardOutput=tty

KillMode=process

KillSignal=SIGKILL

SendSIGKILL=yes

[Install]

WantedBy=multi-user.target

请输入如下命令使能该systemd服务。“-f”选项指force,可按需选择,然后执行系统重启命令。

Target# systemctl -f enable /lib/systemd/system/helloworld.service

Target# reboot

图 56

重新启动Linux系统后,systemd服务开启后就会自动执行helloworld.sh脚本的内容,系统打印信息如下图所示。

图 57

如需取消上电自启动systemd服务,请执行如下命令。

Target# systemctl disable helloworld.service

图 58

TFTP使用说明

TFTP(Trivial File Transfer Protocol)是用来下载远程文件的简单网络协议,它是基于UDP协议的应用。嵌入式Linux的TFTP包括服务器和客户端,常用来完成评估板(客户端)和PC机(服务器)之间的的文件传输功能,可避免频繁的U盘拷贝的过程。

评估板支持TFTP服务器和客户端程序(如下图所示)。本章节主要演示评估板作为客户端使用,同时在PC机Linux系统中搭建TFTP服务器,最终实现PC机与评估板之间的TFTP文件传输方法。

图 59

由于内容篇幅过长,本篇文章分为上中下三章分享,欢迎查阅。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前 言
  • extra驱动编译
  • 编译extra驱动
  • 安装extra驱动
  • 系统信息查询
  • 程序开机自启动说明
  • TFTP使用说明
相关产品与服务
腾讯云小微
腾讯云小微,是一套腾讯云的智能服务系统,也是一个智能服务开放平台,接入小微的硬件可以快速具备听觉和视觉感知能力,帮助智能硬件厂商实现语音人机互动和音视频服务能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档