本帖最后由 快乐龙猫钧哥 于 2018-8-14 22:03 编辑
创龙TL5728-A3-Linux
学习笔记一、 基础准备
1.1安装VMware14.1.2虚拟机
随带光盘里面的虚拟机是11版本的,资料里面说的是14.1.1的,然后我就去官网下载了一个最新的版本(地址:
https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html)。然后按照资料里面一路“下一步”。就走到最后一步,最后选择添加密钥(不要点确定),百度一个:ZC3WK-AFXEK-488JP-A7MQX-XL8YF。OK!手册推荐使用英文版,方式是将安装目录下的 messages 文件夹下名为"zh_CN"的文件夹重命名为"zh",即可正常使用英文版。但是我觉得还是用中文版吧。
1.2基于虚拟机安装 Ubuntu14.04.3
手册上说安装环境是win10 64
位,这个有点疑惑,难道其他系统就不行吗?还是手册不涉及。如无法在虚拟机中安装 64
位操作系统,请在 Windows
开机时进入 BIOS
中,将"CPU Configuration"
的 Virtualization
项状态改为 Enabled
,一般 PC 默认支持 32 位虚拟机操作系统,因此需要将其开启以支持64 位虚拟机操作系统。然后就是新建虚拟机。在安装时选择CPU核心时手册是说:“使用 CPU 核的数目和单核使用的核心数量”,这里面的关系是什么呢???,在安装时注意几个点:A.网络类型选择第一项使用
桥接网络;B.IO控制类型,默认选择第二项"
LSI Logic";C.选择虚拟磁盘类型,这里选择第二项
SCSI。然后一路根据手册安装。前面应该只是进行了一个“工作站”的配置,也就是新建了一个虚拟机,但是里面并没有安装系统。接下来就是安装系统。是在虚拟机设置里面:
Ubuntu
的位置不是手册里面说的,而是在“\Tools\Linux
”里面。然后就可以在主界面看到已经增加了路径。然后安装Ubuntu
时和安装windows
是一样的,不过没有中文的。还有就是屏幕不够宽,用tab
按键就行。调整屏幕大小都不行。 最后是进行root
,先按“Ctrl+Alt+T”调出Terminal
(终端)命令行,输入“sudo passwd root”,
然后密码,然后是设置root
密码。 更新软件,update 是更新软件列表,upgrade 是更新软件,在命令行中输入“sudo apt-get update
”然后我又用upgrade
更新了一下软件。需要好几分钟。 安装 vim
和 gedit
工具。系统自带的文本编辑工具为 vi
,vim
属于 vi
的升级版,请执行如下命令安装 vim
工具:Host# sudo apt-get install vim
。在命令行中输入“sudo apt-get install vim
”。gedit
属于图形化的文本编辑器,操作和 Windows
下的 txt
文本编辑器基本一致,对于初学者来说,会更加适合,如果系统没有安装 gedit
,请执行如下命令:Host# sudo apt-get install gedit
。在命令行中输入“sudo apt-get install gedit
”。1.3安装虚拟机工具
Windows
和虚拟机 Ubuntu
共享文件推荐两种方式。方式一:通过安装虚拟机工具实现共享,方式二:通过安装 Samba
共享工具实现共享。方式一方法见下文,方式二方法见光盘“软件安装\Samba
共享工具安装.pdf
”文件。如果没安装虚拟机工具,进入系统后,屏幕不能全屏,且不能通过共享目录以及拖曳方式在 Windows 和虚拟机 Ubuntu 系统之间传输文件。最后的结果就是可以在"/mnt/hgfs"
下看到新建的共享目录 总结一下当前对VMware虚拟机的认识:VM是安装在电脑的一个软件,这个软件里面别有洞天,可以运行一个操作系统(其实操作系统也是一个软件),这样就实现了在一个操作系统里面实现一个或多个操作系统,有点像程序的嵌套,VM这个软件就是提供这个的桥梁,负责共享键盘鼠标、网络、USB、硬盘等外围器件。全球排名前五的虚拟化软件公司为:VMware、微软、思杰、红帽(Red Hat),甲骨文(Oracle)。1.4 Linux Processor-SDK开发包安装
SDK=Software Development Kit:软件开发工具包。Linux Processor-SDK,处理器SDK是TI提供的一个SDK,提供的功能不仅仅是包含引导加载程序、Linux内核和文件系统,SDK还包含用于在TI处理器(例如,经过验证的交叉编译工具链)上进行开发的工具,可以使用的预构建库,而无需自己重建它们,还有一些帮助文档。TI将SDK等内容和Linux系统结合在一起做了一个名为Matrix的系统。Matrix是一个相当简单的嵌入式Linux系统,它突出了TI处理器产品的一些关键功能(LCD显示器,图形,网络等),相当于就是TI为自己处理器定制的一个Linux操作系统。典型的应用就是beagle bone。所以在创龙的开发板上也是需要安装这个支持包(工具包)的。TI官方LINUX PROCESSOR-SDK资料(网站):
http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/index.html1.4.1安装V03.01.00.06版本的Linux Processor-SDK
先在/home/tronlong
创建一个AM57xx
的文件夹,然后把资料里面的“ti-processor-sdk-linux-am57xx-evm-03.01.00.06-Linux-x86-Install
”复制到AM57xx
文件夹中,这个复制还是需要借助图形界面的。有个问题,Ubuntu
是64
位的,那么SDK
是X86
的,这样匹配吗?(???)难道是向下兼容? 复制完之后,就是安装,注意是BIN文件。安装命令: sudo ./
为什么会有一个小点呢?(???已解答)。安装路径改外在home
里面的一个ti-processor-sdk-linux-am57xx-evm-03.01.00.06
文件夹。就搞定了回答:在linux
命令行中,一个点 “.
”表示当前目录,同理,两个点“..
”表示上一层目录,“/
”是目录切换符。,为了安全起见,默认情况下,linux
并不把当前目录"./"
作为全局搜索路径PATH
的一部分,所以如果想执行当前目录下的程序,必须手工指定程序的目录为当前目录下的程序,所以需要在命令之前添加"./"
,当然如果想执行父目录中的程序,可以在程序之前添加"../"
。1.4.2 交叉编译工具链配置
Linux
交叉编译工具链可用于编译 U-Boot
、Linux
内核、应用程序等。Processor-SDK
开发包已自带交叉编译工具链。 交叉编译:是A
机器上编译生成,运行在B
机器上。两个机子有不同的机器指令。工具链:一般由编译器、连接器、解释器和调试器组成。首先查看没有安装的情况,如下图:
然后用gedit
文本编辑器(图形化的TXT
)打开/etc/profile
目录下的环境变量配置文件,文件是以“.d”为后缀的文件夹?(???已解决)。如下图:用命令“sudo gedit /etc/profile
”打开文件(其实可以像Windows
找到文件后双击),好吧,按照手册上说的,是打不开的,应该也是因为那是个文件夹!查下资料,明天再解决。如图:Linux /etc/profile
文件详解见博客:https://www.cnblogs.com/alliance/p/7093784.html 科普一下: “.d”表示文件加下有系统缺省的配置文件。解决问题了!注意两点:1:gedit是编辑器,是一个程序,它的后面要打空格!看下图,其实前面也解释清楚了,是因为命令没有找到,而不是文件没有找到。2
:确实是有profile.d
文件夹,但是也是有profile
文件的,之前看到的是同名文件夹! 继续,在打开文件之后,在文件最后添加以下语句,将 Processor-SDK
开发包中的交叉编译工具链路径加入系统环境变量中:export
PATH=$PATH:/home/tronlong/ti-processor-sdk-linux-am57xx-evm-03.01.00.06/linux-devkit/sysroots/x86_64-arago-linux/usr/bin 然后执行“source /etc/profile”指令(有空格),使能交叉编译工具链。
科普一下:source命令也称为“点命令”,也就是一个点符号(.
),
是bash
的内部命令。功能:使Shell
读入指定的Shell
程序文件并依次执行文件中的所有语句,source
命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。 然后重启系统,输入命令arm
之后双击TAB
补全,就可从弹出的编译器列表中看到 arm-linux-gnueabihf-gcc-5.3.1
,代表交叉编译工具链版本为:gcc-5.3.1
1.5 U-Boot编译
U-Boot
,全称 Universal Boot Loader
,是遵循GPL
条款的开放源码项目。U-Boot
的作用是系统引导。有以下优点:开放源码;支持多种嵌入式操作系统内核,如Linux、NetBSD,VxWorks, QNX, RTEMS, ARTOS, LynxOS, android
;支持多个处理器系列,如PowerPC、ARM、x86
、MIPS
;U-Boot
对PowerPC
系列处理器支持最为丰富,对于不同系列嵌入式处理器,是靠各个大师进行移植的;丰富的设备驱动源码,如串口、以太网、SDRAM
、FLASH
、LCD
、NVRAM
、EEPROM
、RTC
、键盘等; 这次安装的是U-Boot-2016.05
版本,使用于:发现全部是5728
,这个可能是用的同一处理器,而创龙进行的移植优化,相当于是定制的。清理命令区别说明如下:make clean
:删除大多数的编译生成文件,但会保留配置文件。make mrproper
:删除所有的编译生成文件,同时删除配置文件以及各种备份文件。make distclean
:删除所有的编译生成文件,同时删除配置文件以及各种备份文件和补丁文件,清除最完整。删除的文件范围从小到大依次为:makeclean < make mrproper < make distclean。U-Boot 启动过程可以分启动第一阶段和启动第二阶段。编译所得到的
MLO和
u-boot.img 文件,分别是 U-Boot 启动第一阶段和启动第二阶段镜像文件。
1.5.1安装U-Boot源码
先创建U-Boot源码安装目录,使用“mkdir -p/home/tronlong/AM57xx/U-Boot/U-Boot-2016.05”这里的 -p是保证目录存在,不存在就新建一个。U-Boot 源码的源码版本的支持特性如下表:
将 U-Boot
源码压缩文件复制到“/home/tronlong/AM57xx
”目录下,执行命令“cd/home/tronlong/AM57xx
”跳转到那个目录;再将其解压至安装目录,执行命令为“tar
-zxvfu-boot-g2cdaef6-v1.4.tar.gz -C U-Boot/U-Boot-2016.05/
”后面跟了4
个参数:z :
表示 tar
包是被 gzip
压缩过的,所以解压时需要用 gunzip
解压x :
从 tar
包中把文件提取出来v :
显示详细信息f xxx.tar.gz :
指定被处理的文件是 xxx.tar.gz
;后面一个大写的C
命令是切换到指定目录,相当于解压到目标目录。然后就完成了。1.5.2 清理U-Boot
首先是确保已经安装了Linux Processor-SDK
交叉编译工具链后,进入 U-Boot
源码安装目录,执行 U-Boot
清理命令。先是进入源码安装目录,然后执行清理命令:“make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm distclean
”。使用CROSS_COMPILE=xxx
表示交叉编译器。CROSS_COMPILE=arm-linux-
意思是制定交叉编译器为arm-linux-XXX
。至于ARCH=arm distclean
是指清理方式,不过用法还不知道(???)。然后就清零完成了。1.5.3 编译U-Boot
在编译之前,要先安装device-tree-compiler
工具,此工具用于 U-Boot
的编译。设备树(Devicetree)是一套用来描述硬件属相的规则,是Power.org
组织定义的一套规范。ARM Linux
采用设备树机制源于2011
年。具体资料可以参考:https://www.linuxidc.com/Linux/2016-01/127337.htm 执行“sudo apt-get installdevice-tree-compiler
”安装设备数编译器。然后“sudoapt-get update
”更新。 然后执行命令:“make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm am57xx_evm_defconfigall
”进行编译。编译完成后会在 U-Boot
源码目录下生成 U-Boot
镜像文件 MLO
、u-boot.img
,如下图所示:这里全部都不明白(???),道行太浅,先把前面那句和这句进行一个对比再说。“make CROSS_COMPILE=arm-linux-gnueabihf-ARCH=arm distclean
”“make CROSS_COMPILE=arm-linux-gnueabihf-ARCH=arm am57xx_evm_defconfig all
1.6 Linux-4.4.19内核编译
内核编译可以参考:https://blog.csdn.net/qq_34247099/article/details/50949720 但是什么是内核,为什么要编译? 什么是内核?操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体,完成控制工作的软件就称为操作系统,在Linux
的术语中被称为“内核”,也可以称为“核心”。Linux
内核的主要模块(或组件)分以下几个部分:存储管理、CPU
和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等 为什么要编译?因为linux
是一个开源的操作系统,提供了强有力的开放接口,允许用户自行开发、修改,从而可能会有用户的的系统经过修改,不再是一个固有的东西,这是就需要编译内核。Linux
内核版本是不断更新的,通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、 更稳定,并且一般会修复老版本中发现的许多漏洞等。而已安装好的Linux
系统如果不是滚动升级的,或者没有内核更新选择的话,如果用户想要使用这些新特性,或想根据自己的硬件平台定制一个更高效,更稳定,更快速的内核,就需要重新编译内核。一句话,用户自己或者管理员改了操作系统,就需要编译并更新。1.6.1 安装Linux内核源码
还是跟U-Boot
的步骤差不多,首先是创建Linux
内核源码安装目录,执行命令:“mkdir -p /home/tronlong/AM57xx/kernel/Linux-4.4.19
”,然后将内核源码复制到安装目录并解压,各版本的特性如下:执行命令:“cd /home/tronlong/AM57xx
”和解压命令:“tar -xvflinux-4.4.19-g8df769e-v1.6.tar.gz -C kernel/Linux-4.4.19/”。注意各个字幕的大小写,我新建目录就将小写搞成大写了。这里的解压,和上面的一样用法,大概清楚了。1.6.2 清理Linux内核
确保已配置为 V03.01.00.06
版本 LinuxProcessor-SDK
交叉编译工具链后,进入 Linux
内核源码安装目录,执行 Linux
内核清理命令。执行命令:“cd kernel/Linux-4.4.19/
”和“makeARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
”。这里将两个清零的命令列出来:make ARCH=armCROSS_COMPILE=arm-linux-gnueabihf- distcleanmakeCROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm distclean
形式不一样,功能就不一样(???)。1.6.3 配置Linux内核
在 Linux
内核源码安装目录下,执行命令:“makeARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- tisdk_am57xx-evm_defconfig
”,完成之后如图: 可以通过 menuconfig
命令,启动图形界面修改配置。科普一下:menuconfig
,从名字上,就可以看出,是基于menu
的config
,即,菜单式的配置。如果不需要,则可跳过此步骤。执行 menuconfig
命令前,请先执行命令sudoapt-get install libncurses5-dev
安装图形依赖库。安装完成之后,执行命令“make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig”启动 menuconfig
配置界面。如图:使用键盘
上下键和
空格键进行选择,每个选项前都会有一个括号供用户选择,选择项为空表示不选中此选项," * "表示选中此选项并编入
内核," M "表示选中此选项并编译成
模块。修改配置后,点击"
"保存配置,并点击"< Exit >"退出。1.6.4 编译设备树
不同型号开发板的设备树文件名不同,故编译命令不同。在 Linux 内核源码安装目录下,执行如下命令编译设备树文件:TL5728-EasyEVM开发板:“make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am57xx-evm-reva3.dtb”TL5728-IDK开发板:“make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am572x-idk.dtb”和“make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-am572x-idk-pru1-mii.dtb”TL5728F-EVM开发板:“make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am57xx-fpga-evm.dtb”为什么是这样还不得而知(???),有可能是系统的内核不一样和功能不一样,倒是设备的部分情况和种类不同。执行完之后如图:编译完成后,会在Linux 内核源码目录"arch/arm/boot/dts"路径下,生成对应平台的设备树文件。使用 SD 系统启动卡启动系统时,如需替换设备树,只需将编译生成的新设备树文件替换 SD 系统启动卡 rootfs 分区“/boot”目录下的对应文件即可。(???)这里还待仔细研究。1.6.5 编译Linux内核
执行指令“sudo apt-get install lzop”安装 lzop 压缩工具,此工具在编译 Linux 内核时需要用到。然后在 Linux 内核源码安装目录下,执行命令“make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage -j 32”编译 Linux 内核。“-j 32”是一个编译选项,告诉操作系统用 32 个线程去编译,加快编译速度。注意“zImage”中,是i的大写!。
本帖最后由 快乐龙猫钧哥 于 2018-8-14 22:03 编辑
创龙TL5728-A3-Linux
学习笔记一、 基础准备
1.1安装VMware14.1.2虚拟机
随带光盘里面的虚拟机是11版本的,资料里面说的是14.1.1的,然后我就去官网下载了一个最新的版本(地址:
https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html)。然后按照资料里面一路“下一步”。就走到最后一步,最后选择添加密钥(不要点确定),百度一个:ZC3WK-AFXEK-488JP-A7MQX-XL8YF。OK!手册推荐使用英文版,方式是将安装目录下的 messages 文件夹下名为"zh_CN"的文件夹重命名为"zh",即可正常使用英文版。但是我觉得还是用中文版吧。
1.2基于虚拟机安装 Ubuntu14.04.3
手册上说安装环境是win10 64
位,这个有点疑惑,难道其他系统就不行吗?还是手册不涉及。如无法在虚拟机中安装 64
位操作系统,请在 Windows
开机时进入 BIOS
中,将"CPU Configuration"
的 Virtualization
项状态改为 Enabled
,一般 PC 默认支持 32 位虚拟机操作系统,因此需要将其开启以支持64 位虚拟机操作系统。然后就是新建虚拟机。在安装时选择CPU核心时手册是说:“使用 CPU 核的数目和单核使用的核心数量”,这里面的关系是什么呢???,在安装时注意几个点:A.网络类型选择第一项使用
桥接网络;B.IO控制类型,默认选择第二项"
LSI Logic";C.选择虚拟磁盘类型,这里选择第二项
SCSI。然后一路根据手册安装。前面应该只是进行了一个“工作站”的配置,也就是新建了一个虚拟机,但是里面并没有安装系统。接下来就是安装系统。是在虚拟机设置里面:
Ubuntu
的位置不是手册里面说的,而是在“\Tools\Linux
”里面。然后就可以在主界面看到已经增加了路径。然后安装Ubuntu
时和安装windows
是一样的,不过没有中文的。还有就是屏幕不够宽,用tab
按键就行。调整屏幕大小都不行。 最后是进行root
,先按“Ctrl+Alt+T”调出Terminal
(终端)命令行,输入“sudo passwd root”,
然后密码,然后是设置root
密码。 更新软件,update 是更新软件列表,upgrade 是更新软件,在命令行中输入“sudo apt-get update
”然后我又用upgrade
更新了一下软件。需要好几分钟。 安装 vim
和 gedit
工具。系统自带的文本编辑工具为 vi
,vim
属于 vi
的升级版,请执行如下命令安装 vim
工具:Host# sudo apt-get install vim
。在命令行中输入“sudo apt-get install vim
”。gedit
属于图形化的文本编辑器,操作和 Windows
下的 txt
文本编辑器基本一致,对于初学者来说,会更加适合,如果系统没有安装 gedit
,请执行如下命令:Host# sudo apt-get install gedit
。在命令行中输入“sudo apt-get install gedit
”。1.3安装虚拟机工具
Windows
和虚拟机 Ubuntu
共享文件推荐两种方式。方式一:通过安装虚拟机工具实现共享,方式二:通过安装 Samba
共享工具实现共享。方式一方法见下文,方式二方法见光盘“软件安装\Samba
共享工具安装.pdf
”文件。如果没安装虚拟机工具,进入系统后,屏幕不能全屏,且不能通过共享目录以及拖曳方式在 Windows 和虚拟机 Ubuntu 系统之间传输文件。最后的结果就是可以在"/mnt/hgfs"
下看到新建的共享目录 总结一下当前对VMware虚拟机的认识:VM是安装在电脑的一个软件,这个软件里面别有洞天,可以运行一个操作系统(其实操作系统也是一个软件),这样就实现了在一个操作系统里面实现一个或多个操作系统,有点像程序的嵌套,VM这个软件就是提供这个的桥梁,负责共享键盘鼠标、网络、USB、硬盘等外围器件。全球排名前五的虚拟化软件公司为:VMware、微软、思杰、红帽(Red Hat),甲骨文(Oracle)。1.4 Linux Processor-SDK开发包安装
SDK=Software Development Kit:软件开发工具包。Linux Processor-SDK,处理器SDK是TI提供的一个SDK,提供的功能不仅仅是包含引导加载程序、Linux内核和文件系统,SDK还包含用于在TI处理器(例如,经过验证的交叉编译工具链)上进行开发的工具,可以使用的预构建库,而无需自己重建它们,还有一些帮助文档。TI将SDK等内容和Linux系统结合在一起做了一个名为Matrix的系统。Matrix是一个相当简单的嵌入式Linux系统,它突出了TI处理器产品的一些关键功能(LCD显示器,图形,网络等),相当于就是TI为自己处理器定制的一个Linux操作系统。典型的应用就是beagle bone。所以在创龙的开发板上也是需要安装这个支持包(工具包)的。TI官方LINUX PROCESSOR-SDK资料(网站):
http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/index.html1.4.1安装V03.01.00.06版本的Linux Processor-SDK
先在/home/tronlong
创建一个AM57xx
的文件夹,然后把资料里面的“ti-processor-sdk-linux-am57xx-evm-03.01.00.06-Linux-x86-Install
”复制到AM57xx
文件夹中,这个复制还是需要借助图形界面的。有个问题,Ubuntu
是64
位的,那么SDK
是X86
的,这样匹配吗?(???)难道是向下兼容? 复制完之后,就是安装,注意是BIN文件。安装命令: sudo ./
为什么会有一个小点呢?(???已解答)。安装路径改外在home
里面的一个ti-processor-sdk-linux-am57xx-evm-03.01.00.06
文件夹。就搞定了回答:在linux
命令行中,一个点 “.
”表示当前目录,同理,两个点“..
”表示上一层目录,“/
”是目录切换符。,为了安全起见,默认情况下,linux
并不把当前目录"./"
作为全局搜索路径PATH
的一部分,所以如果想执行当前目录下的程序,必须手工指定程序的目录为当前目录下的程序,所以需要在命令之前添加"./"
,当然如果想执行父目录中的程序,可以在程序之前添加"../"
。1.4.2 交叉编译工具链配置
Linux
交叉编译工具链可用于编译 U-Boot
、Linux
内核、应用程序等。Processor-SDK
开发包已自带交叉编译工具链。 交叉编译:是A
机器上编译生成,运行在B
机器上。两个机子有不同的机器指令。工具链:一般由编译器、连接器、解释器和调试器组成。首先查看没有安装的情况,如下图:
然后用gedit
文本编辑器(图形化的TXT
)打开/etc/profile
目录下的环境变量配置文件,文件是以“.d”为后缀的文件夹?(???已解决)。如下图:用命令“sudo gedit /etc/profile
”打开文件(其实可以像Windows
找到文件后双击),好吧,按照手册上说的,是打不开的,应该也是因为那是个文件夹!查下资料,明天再解决。如图:Linux /etc/profile
文件详解见博客:https://www.cnblogs.com/alliance/p/7093784.html 科普一下: “.d”表示文件加下有系统缺省的配置文件。解决问题了!注意两点:1:gedit是编辑器,是一个程序,它的后面要打空格!看下图,其实前面也解释清楚了,是因为命令没有找到,而不是文件没有找到。2
:确实是有profile.d
文件夹,但是也是有profile
文件的,之前看到的是同名文件夹! 继续,在打开文件之后,在文件最后添加以下语句,将 Processor-SDK
开发包中的交叉编译工具链路径加入系统环境变量中:export
PATH=$PATH:/home/tronlong/ti-processor-sdk-linux-am57xx-evm-03.01.00.06/linux-devkit/sysroots/x86_64-arago-linux/usr/bin 然后执行“source /etc/profile”指令(有空格),使能交叉编译工具链。
科普一下:source命令也称为“点命令”,也就是一个点符号(.
),
是bash
的内部命令。功能:使Shell
读入指定的Shell
程序文件并依次执行文件中的所有语句,source
命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。 然后重启系统,输入命令arm
之后双击TAB
补全,就可从弹出的编译器列表中看到 arm-linux-gnueabihf-gcc-5.3.1
,代表交叉编译工具链版本为:gcc-5.3.1
1.5 U-Boot编译
U-Boot
,全称 Universal Boot Loader
,是遵循GPL
条款的开放源码项目。U-Boot
的作用是系统引导。有以下优点:开放源码;支持多种嵌入式操作系统内核,如Linux、NetBSD,VxWorks, QNX, RTEMS, ARTOS, LynxOS, android
;支持多个处理器系列,如PowerPC、ARM、x86
、MIPS
;U-Boot
对PowerPC
系列处理器支持最为丰富,对于不同系列嵌入式处理器,是靠各个大师进行移植的;丰富的设备驱动源码,如串口、以太网、SDRAM
、FLASH
、LCD
、NVRAM
、EEPROM
、RTC
、键盘等; 这次安装的是U-Boot-2016.05
版本,使用于:发现全部是5728
,这个可能是用的同一处理器,而创龙进行的移植优化,相当于是定制的。清理命令区别说明如下:make clean
:删除大多数的编译生成文件,但会保留配置文件。make mrproper
:删除所有的编译生成文件,同时删除配置文件以及各种备份文件。make distclean
:删除所有的编译生成文件,同时删除配置文件以及各种备份文件和补丁文件,清除最完整。删除的文件范围从小到大依次为:makeclean < make mrproper < make distclean。U-Boot 启动过程可以分启动第一阶段和启动第二阶段。编译所得到的
MLO和
u-boot.img 文件,分别是 U-Boot 启动第一阶段和启动第二阶段镜像文件。
1.5.1安装U-Boot源码
先创建U-Boot源码安装目录,使用“mkdir -p/home/tronlong/AM57xx/U-Boot/U-Boot-2016.05”这里的 -p是保证目录存在,不存在就新建一个。U-Boot 源码的源码版本的支持特性如下表:
将 U-Boot
源码压缩文件复制到“/home/tronlong/AM57xx
”目录下,执行命令“cd/home/tronlong/AM57xx
”跳转到那个目录;再将其解压至安装目录,执行命令为“tar
-zxvfu-boot-g2cdaef6-v1.4.tar.gz -C U-Boot/U-Boot-2016.05/
”后面跟了4
个参数:z :
表示 tar
包是被 gzip
压缩过的,所以解压时需要用 gunzip
解压x :
从 tar
包中把文件提取出来v :
显示详细信息f xxx.tar.gz :
指定被处理的文件是 xxx.tar.gz
;后面一个大写的C
命令是切换到指定目录,相当于解压到目标目录。然后就完成了。1.5.2 清理U-Boot
首先是确保已经安装了Linux Processor-SDK
交叉编译工具链后,进入 U-Boot
源码安装目录,执行 U-Boot
清理命令。先是进入源码安装目录,然后执行清理命令:“make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm distclean
”。使用CROSS_COMPILE=xxx
表示交叉编译器。CROSS_COMPILE=arm-linux-
意思是制定交叉编译器为arm-linux-XXX
。至于ARCH=arm distclean
是指清理方式,不过用法还不知道(???)。然后就清零完成了。1.5.3 编译U-Boot
在编译之前,要先安装device-tree-compiler
工具,此工具用于 U-Boot
的编译。设备树(Devicetree)是一套用来描述硬件属相的规则,是Power.org
组织定义的一套规范。ARM Linux
采用设备树机制源于2011
年。具体资料可以参考:https://www.linuxidc.com/Linux/2016-01/127337.htm 执行“sudo apt-get installdevice-tree-compiler
”安装设备数编译器。然后“sudoapt-get update
”更新。 然后执行命令:“make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm am57xx_evm_defconfigall
”进行编译。编译完成后会在 U-Boot
源码目录下生成 U-Boot
镜像文件 MLO
、u-boot.img
,如下图所示:这里全部都不明白(???),道行太浅,先把前面那句和这句进行一个对比再说。“make CROSS_COMPILE=arm-linux-gnueabihf-ARCH=arm distclean
”“make CROSS_COMPILE=arm-linux-gnueabihf-ARCH=arm am57xx_evm_defconfig all
1.6 Linux-4.4.19内核编译
内核编译可以参考:https://blog.csdn.net/qq_34247099/article/details/50949720 但是什么是内核,为什么要编译? 什么是内核?操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体,完成控制工作的软件就称为操作系统,在Linux
的术语中被称为“内核”,也可以称为“核心”。Linux
内核的主要模块(或组件)分以下几个部分:存储管理、CPU
和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等 为什么要编译?因为linux
是一个开源的操作系统,提供了强有力的开放接口,允许用户自行开发、修改,从而可能会有用户的的系统经过修改,不再是一个固有的东西,这是就需要编译内核。Linux
内核版本是不断更新的,通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、 更稳定,并且一般会修复老版本中发现的许多漏洞等。而已安装好的Linux
系统如果不是滚动升级的,或者没有内核更新选择的话,如果用户想要使用这些新特性,或想根据自己的硬件平台定制一个更高效,更稳定,更快速的内核,就需要重新编译内核。一句话,用户自己或者管理员改了操作系统,就需要编译并更新。1.6.1 安装Linux内核源码
还是跟U-Boot
的步骤差不多,首先是创建Linux
内核源码安装目录,执行命令:“mkdir -p /home/tronlong/AM57xx/kernel/Linux-4.4.19
”,然后将内核源码复制到安装目录并解压,各版本的特性如下:执行命令:“cd /home/tronlong/AM57xx
”和解压命令:“tar -xvflinux-4.4.19-g8df769e-v1.6.tar.gz -C kernel/Linux-4.4.19/”。注意各个字幕的大小写,我新建目录就将小写搞成大写了。这里的解压,和上面的一样用法,大概清楚了。1.6.2 清理Linux内核
确保已配置为 V03.01.00.06
版本 LinuxProcessor-SDK
交叉编译工具链后,进入 Linux
内核源码安装目录,执行 Linux
内核清理命令。执行命令:“cd kernel/Linux-4.4.19/
”和“makeARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
”。这里将两个清零的命令列出来:make ARCH=armCROSS_COMPILE=arm-linux-gnueabihf- distcleanmakeCROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm distclean
形式不一样,功能就不一样(???)。1.6.3 配置Linux内核
在 Linux
内核源码安装目录下,执行命令:“makeARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- tisdk_am57xx-evm_defconfig
”,完成之后如图: 可以通过 menuconfig
命令,启动图形界面修改配置。科普一下:menuconfig
,从名字上,就可以看出,是基于menu
的config
,即,菜单式的配置。如果不需要,则可跳过此步骤。执行 menuconfig
命令前,请先执行命令sudoapt-get install libncurses5-dev
安装图形依赖库。安装完成之后,执行命令“make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig”启动 menuconfig
配置界面。如图:使用键盘
上下键和
空格键进行选择,每个选项前都会有一个括号供用户选择,选择项为空表示不选中此选项," * "表示选中此选项并编入
内核," M "表示选中此选项并编译成
模块。修改配置后,点击"
"保存配置,并点击"< Exit >"退出。1.6.4 编译设备树
不同型号开发板的设备树文件名不同,故编译命令不同。在 Linux 内核源码安装目录下,执行如下命令编译设备树文件:TL5728-EasyEVM开发板:“make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am57xx-evm-reva3.dtb”TL5728-IDK开发板:“make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am572x-idk.dtb”和“make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-am572x-idk-pru1-mii.dtb”TL5728F-EVM开发板:“make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am57xx-fpga-evm.dtb”为什么是这样还不得而知(???),有可能是系统的内核不一样和功能不一样,倒是设备的部分情况和种类不同。执行完之后如图:编译完成后,会在Linux 内核源码目录"arch/arm/boot/dts"路径下,生成对应平台的设备树文件。使用 SD 系统启动卡启动系统时,如需替换设备树,只需将编译生成的新设备树文件替换 SD 系统启动卡 rootfs 分区“/boot”目录下的对应文件即可。(???)这里还待仔细研究。1.6.5 编译Linux内核
执行指令“sudo apt-get install lzop”安装 lzop 压缩工具,此工具在编译 Linux 内核时需要用到。然后在 Linux 内核源码安装目录下,执行命令“make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage -j 32”编译 Linux 内核。“-j 32”是一个编译选项,告诉操作系统用 32 个线程去编译,加快编译速度。注意“zImage”中,是i的大写!。