嵌入式Linux系统移植之旅,你准备好了吗

准备工作

1 引言

本篇是嵌入式Linux系统移植开发学习和实战演练的开篇,俗话说,巧妇难为无米之炊,本篇主要介绍进行专栏学习的准备工作。Let’s go!

2 我们需要这些资源

2.1 硬件资源

2.1.1 BeagleBone Black开发板

本专栏的学习,主要依托于一款开源硬件平台——BeagleBone Black,官网链接,庐山真面如下:

beaglebone black硬件资源

BeagleBone 与 Arduino 和 Raspberry Pi可以说是目前应用最广泛的三大嵌入式开源平台。BeagleBone Black是BeagleBone系列的一个开发套件,基于TI公司的AM3358处理器,虽非TI官方开发制作,但TI对其支持力度极大。与Arduino相比,其资源丰富,与 Raspberry Pi相比,其硬件开源,但名气在国内相对于Arduino和Raspberry Pi较低。

使用BeagleBone Black开发板,常见的开发方式有两种

  • 基于BeagleBone官方提供了完整的固件镜像,可以运行Debian、Angstrom、Ubuntn、Android等操作系统,然后在其上做应用开发

  • 基于TI官方提供的SDK,其对BeagleBone系列开发板进行支持,进行应用开发和系统移植的二次开发

本系列采用后者,即TI官方的SDK,进行Linux系统移植开发的学习。

这里需要提一点的是:实际的工作中,为了降低开发风险和缩短开发周期,嵌入式Linux系统移植都不是从0开始,都是基于芯片厂商提供的SDK进行二次开发,针对公司自研板卡的硬件设计进行软硬件的适配。公司自研的板卡也会很大程度上参考芯片厂商的官方开发板,尤其是最小系统,除非有降本或者其它不得不更换外设硬件的考虑。另外,并不是说做二次开发就没有技术含量了,依然需要了解嵌入式Linux系统移植所涉及的方方面面知识,所以,加油吧!

2.1.2 USB转TTL转换器及其连接线

BeagleBone Black开发板的调试串口是TTL电平的,接口示意图如下所示:

image-20240309113326954

需要一个USB转TTL的转换器及其连接线,按图示接法,连接PC和BeagleBone Black开发板,我选用的转换器如下所示,大家可以根据自己的情况选择,只要能满足USB转TTL即可。

image-20240309113701335

安装对应的转换器驱动后,查看设备管理器出现对应的串口设备即可。

image-20240309114008595

2.1.3 各种扩展板

BeagleBone Black开发板本身所带的外设资源已经比较丰富,包括USB口、以太网口、Mini HDMI接口,以及按键和LED。

另外,如果有其它的外设需求,可以利用引出的两排外扩端子接入其它各种外设。外扩端子的引脚分布如下所示:

beagleboneblack_P8P9

BeagleBone官方提供了各种各样的扩展板,可以扣界在BeagleBone Black本体之上,用于扩展BeagleBone Black的功能,适应不同的使用场所。

image-20240309134122635

当然,扩展板并不是必须具备的,如果不是有额外的外设需求,BeagleBone Black本体的资源已经足够了。如果不够,也可以使用杜邦线等连接外设,并不一定非得使用扩展板。我使用的扩展板是微雪电子制作的,购买于2016年(吃灰很久了,汗),目前已经不再生产。需要扩展板的读者,可以在淘宝搜索或者在BeagleBone官网购买,有能力的也可以自己制作。

接下来介绍一下我所使用的扩展板:

  • RS485&CAN总线扩展板,扩展485总线和CAN总线

    IMG_20240309_140242

  • Misc扩展板,扩展按键、LED、蜂鸣器、ADC、E2PROM和RTC

    IMG_20240309_140431

  • LCD屏扩展板,可以外接4.3寸、7寸LCD,只要是RGB接口和4线触摸屏,接口一致均可以

    IMG_20240309_140305

2.1.4 LCD触摸一体屏

LCD屏幕非必须,如果想学习LCD驱动和Linux下的图形化编程(Qt/LVGL等),可以备一块,我使用的LCD触摸屏如下所示,支持4线电阻触摸屏和800x480分辨率的RGB接口LCD。

7寸电阻屏

2.2 软件资源

2.2.1 TI官方SDK
  • 登录TI官网,按如下图所示,搜索am335x

    image-20231231171847885

  • 在搜索结果中,点击PROCESSOR-SDK-AM335X 软件开发套件(SDK),如下所示

    image-20231231172010774

  • 选择PROCESSOR-SDK-LINUX-AM335X,单击下载选项。

image-20231231172053584

  • 单机下载选项后,弹出的界面如下所示,列出了最新的SDK版本,这里我们选择查看全部版本,找一个比较旧的版本进行学习

    image-20231231172138088

  • 历史版本列表中,选择02.00.00.00版本进行学习。这里你可能要问,为什么要选择旧版本进行学习呢?主要是因为,我第一次接触BeagleBone Black时大概在2016年,也是拿这个版本进行学习的,在这里纪念一下,嘻嘻。

    新旧版本之间的差异,主要在:

    • 交叉编译器版本
    • U-Boot版本
    • Linux内核版本
    • 集成的根文件系统中各种软件库的版本,比如Qt

    image-20231231172234203

  • 下载SDK源码,点击02.00.00.00,右边呈现该版本SDK所对应的资源列表,如下所示:

    image-20231231173000117

    • 标号1为SDK的安装版本,可以直接安装到宿主机Ubuntu系统下,我们使用标号5对应的SDK源码,所以可以不用下载该安装版本

    • 标号2为引脚配置工具,后续开发驱动的时候,会使用到,下载

    • 标号3为SD卡镜像文件,看右边的说明可知,在制作启动SD卡需要用到,下载

    • 标号4为交叉编译工具链,下载

      由于这个版本的SDK过于遥远(写文章时是2024年),所以链接失效了,我找到了新的下载链接,在这里下载

      image-20240309152219517

    • 标号5为SDK的源码版本,内含U-Boot、Linux内核的源码,我们主要使用这个,下载

      关于为什么不使用安装版本,而使用源码版本,主要是个人喜好吧,安装版本会有一个安装脚本被执行,做了很多自动化的操作。用源码版本可以自己掌控整个过程。

2.2.2 Tera Term

Tera Term是一款界面简洁,功能实用的调试工具,支持串行端口,远程登录和SSH连接,内置的宏脚本语言,同时支持插件机制,允许应用程序创建许多有用的扩展。其软件界面如下,在这里下载

image-20240309152615219

BeagleBone Black调试串口默认的配置如下,COM1根据实际的串口设备进行选择,关于TeraTerm如何使用,这里不再赘述。

image-20240309155134039

2.2.3 宿主机环境
2.2.3.1 VMVare&Ubuntu

VMVare和Ubuntu的作用、如何安装VMvare以及如何在VMvare下安装Ubuntu,在这里就不再赘述了。可以选择已经搭建好的Ubuntu开发环境,节省时间。

2.2.3.2 安装交叉编译工具链
  • 下载完毕后,拷贝到Ubuntu环境下

  • 创建目录/usr/local/arm,用于存放一些用于Linux开发的工具

    sudo mkdir /usr/local/arm

  • 解压交叉编译工具链到刚才创建的目录中

    sudo tar xvf gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf.tar.xz -C /usr/local/arm/

  • 添加环境变量并生效

    • 修改配置文件,添加红框所示部分

      sudo vi ~/.bashrc

      image-20231231180808050

    • 生效配置文件

      source ~/.bashrc

  • 验证交叉编译工具链是否安装成功

    arm-linux-gnueabihf-gcc -v

    如果出现如下图所示的版本号4.9.3,则说明交叉编译工具链安装成功

    image-20231231180936568

2.2.4 镜像刻录工具

Win32 Disk Imager是一款开源的镜像刻录工具,我们使用它主要是用于制作启动SD卡,将TI官方提供的SD卡镜像文件刻录进SD卡,在这里下载

2.2.5 如果你想一次获取这些资源

如果你不想按照步骤下载准备软件资源(硬件开发板请自备哈),而是想用现成的,尤其是VMvare和Ubuntu。请让子弹飞一会,后面我会将资源统一传到百度网盘,并把下载链接贴出来。

3 让系统先跑起来

3.1 SD启动卡制作

  • 准备好SD卡镜像文件

  • 安装好Win32 Disk Imager

  • 准备一张空间大于4GB的SD卡(如果是高版本的SDK,可能得大于8GB,我手头只有一张4GB的SD卡,这也是选择低版本SDK另一个不得以的原因吧😁)

  • 准备一个SD卡读卡器

  • SD卡连接电脑

  • 运行Win32 Disk Imager,选择镜像文件,选择设备,执行写入操作,大约20分钟左右,弹出写入成功提示即可

    image-20231231172616648

    image-20231231173029986

3.2 启动系统

  • 插入制作好的SD卡

  • 连接好USB转TTL转换器

  • 按住Boot按键,从SD卡启动

  • 接通电源,BeagleBone Black启动,登录密码为root

    image-20231231173811116

    image-20231231174024943

    image-20231231174330508

  • 从启动信息输出中可以看到

    • U-Boot使用的版本是2015.07
    • Linux内核使用的版本是4.1.6
  • 22
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序匠小飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值