使用crosstool-ng进行linux系统移植

前言

嵌入式开发,特别是针对老旧芯片,老旧开发板的开发工作是十分艰难的,因为现有版本的工具已经很难做到对老旧版本软件,老旧芯片的支持,存在大量的兼容性错误。所以本文旨在探索一条现阶段可行的针对powerpc 440的嵌入式开发方法。希望有看到这篇文章的人能学习到我的失败经验,少走一些弯路。
这篇文章写的挺多,其实更偏向于笔记。主要的原因就是失败了太多次,每次都得重新安装,而安装的时间又太长,只能写写笔记消磨点时间,也为日后重装的时候累积经验。

开始

本次使用的硬件平台为XILINX Virtex-5 ML507开发板,对上面的powerpc440硬核进行开发。
系统为Fedora 33
就后续开发经验来看,这个版本显然太高了,可能造成很多的兼容性问题。
最好在fedora 20以下或者ubuntu 18以下
果然fedora 33上失败了,转到了CentOS5上进行。

编译环境搭建使用crosstool-ng-1.24.0
http://crosstool-ng.org/download/crosstool-ng/

u-boot使用2015.4
https://ftp.denx.de/pub/u-boot/

kermit

kermit是连接串口和网络的通信软件,使用此软件来设置linux主机的串口和与目标的网络通信。
对于fedora 33,可也直接使用

kermit的安装

sudo yum install ckermit

来进行安装。
或者访问
http://www.columbia.edu/kermit/
下载kermit这个软件时,你会发现有两个kermit包。你只需要安装ckermit。其中gkermit仅仅是实现kermit传输协议的一个命令行工具。
如果是手动下载的话,解压后输入make linux进行安装,成功后会生成一个wermit。
按照官网的意思wermit是用来测试的,运行正常即可改名为kermit放到/usr/bin里

进行串口配置

CH340串口驱动

https://blog.csdn.net/bingyu9875/article/details/80651778

不知道什么原因,linux串口驱动无法安装。
fedora 33好像是kernel太新目录结构改了,导致驱动无法编译。不过新版本的linux自带驱动了。
CentOS 5感觉像是编译器版本不对,编译.c大面积报错。

但是CentOS最起码能识别到usb,但是fedora好像一点反应都没有

暂时用win上的串口显示吧

kermit串口配置

主要看看这个
https://blog.csdn.net/u013029731/article/details/88877350

在这里插入图片描述
u-boot的ml507板的设置。
波特率9600。

kermit在执行其它命令之前,会执行你的用户目录下的初始文件.kermrc,所以可以非常简单的通过初始化命令来定制kermit。
~/.kermrc:
set line /dev/ttyS0
set speed 9600
set carrier-watch off
set handshake none
set flow-control none
robust
set file type bin
set file name lit
set rec pack 1000
set send pack 1000
set window 5
这个设置假定你使用的是主机第一个串口(/dev/ttyS0),以115200这个波特率与目标板的串口连接。
然后你可以连接目标板了:
$ kermit -c
Connecting to /dev/ttyS0, speed 115200.
The escape character is Ctrl-/ (ASCII 28, FS)
Type the escape character followed by C to get back,
or followed by ? to see other options.

配置TFTP服务器

使用U-Boot下载Linux内核或者应用程序的最快捷的方法是通过网络传输。为了这一目的,U-Boot实现了TFTP协议(参见U-Boot中的tftpboot命令)。为了使主机支持TFTP,你必须确保TFTP后台程序/usr/sbin/in.tftpd已经安装。

在RedHat系统中,你可以运行下面的命令来确认:
$ rpm -q tftp-server
如果没有安装,请从你的Linux安装盘或者其它媒介安装。

在fedora 33中,也可以直接使用yum来安装

$ sudo yum install tftp-server

大多数的Linux发行版都默认关闭TFTP服务。以RedHat系统为例,如果要使能TFTP服务,编辑文件/etc/xinetd.d/tftp,移除这一行:
disable = yes
或者注释掉它,或者修改disable = no
此外,确保/tftpboot目录存在,而且有访问权限(至少应该"dr-xr-xr-x")。

对于新版的linux,比方说我用到的fedora 33,使用指令即可开启服务

$ sudo systemctl start tftp
$ sudo systemctl enable tftp

$ sudo firewall-cmd --permanent --add-service tftp
$ sudo firewall-cmd --reload

使用crosstool-ng搭建交叉编译环境

crosstool-ng,全称是crosstool Next Generation,即下一代crosstool。

对于CentOS 5的配置

因为centos5已经停更,原来的yum源已经失效,需要更改yum源来使用yum。

gedit /etc/yum.repos.d/CentOS-Base.repo

将以下内容替换原来的内容

#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://vault.centos.org/5.11/os/$basearch/
gpgcheck=1
gpgkey
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu是一种基于Linux的操作系统,而crosstool-ng是一个工具链生成工具。这个工具允许用户在Ubuntu操作系统上生成交叉编译工具链,从而能够在一个平台上为不同的目标体系结构编译和构建软件。 使用crosstool-ng可以为各种不同的目标体系结构生成交叉编译工具链,包括ARM、MIPS、PowerPC等。生成的工具链包含了一个交叉编译器、库和头文件,可以用来编译和构建适用于特定目标体系结构的应用程序。 Ubuntu的用户可以通过安装crosstool-ng并按照相应的文档和指南进行设置和配置。首先,用户需要在Ubuntu上安装和配置必要的开发工具和依赖项,然后从crosstool-ng的官方网站下载最新的源代码并进行编译和安装。 安装完成后,用户需要使用crosstool-ng提供的配置文件进行配置和设置。用户可以选择合适的目标体系结构,并选择所需的版本和选项。之后,用户可以运行crosstool-ng来生成交叉编译工具链。 一旦工具链生成完成,用户就可以使用它来编译和构建适用于特定目标体系结构的应用程序。用户可以在Ubuntu上开发应用程序,并将其交叉编译为可在其他平台上运行的可执行文件。 总之,Ubuntu和crosstool-ng的结合为用户提供了一个方便而强大的工具,使他们能够在Ubuntu上生成适用于不同目标体系结构的交叉编译工具链,并开发多平台的应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值