31188

嵌入式Linux-001开发环境

开发板

嗵哥最近在学习嵌入式Linux开发,经过一番简单的资料搜寻对比,试看了部分韦东山老师的视频教程,讲解的通俗易懂,非常适合初学者学习。且开发板的资源材料也很丰富的,故最终入手了韦老师的JZ2440开发板。

这里列一下主要的板载资源配置,如下:

jz2440_main.png

驱动及工具

由于韦东山老师的开发板,只提供了Windows、Linux的驱动及工具,而嗵哥的主力生产机是macOS系统,经过一番艰难地查阅、研究、验证后,总算搞定了macOS下的开发环境搭建。在此做个记录,以便能为后续的同学提供一些帮助。

JZ2440有两个USB口,一个USB串口用来与开发板命令交互,一个常规USB口用来从PC下载较大的文件(主要是由于OpenJtag烧写口传输数据太慢)。

1、USB串口驱动

jz2440_serial.jpg

通过观察发现,JZ2440使用的usb串口芯片是PL2303TA,所以直接官网下载驱动安装即可,驱动地址 http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=229&pcid=41

驱动安装成功后,必须重启电脑。将设备USB串口与电脑连接,命令行输入

ll /dev/tty.*

若有 tty.usbserial 则表示驱动安装生效了。

1.1、串口工具CoolTerm

macOS下的GUI串口工具,优点是稳定、免费。缺点是不能保留完整的历史滚屏。下载地址 http://freeware.the-meiers.org/CoolTermMac.zip
首次使用,请先按如下参数配置

jz2440_CoolTerm.png

确定后,注意保存配置。

开发板上电后,打开CoolTerm,载入配置,点击Connect即可。若连接失败,请拔插USB口后再尝试连接。

1.2、串口工具minicom

推荐一款经典的命令行串口工具minicom,非常符合嗵哥的使用习惯。。。
优点是:嗵哥觉得OK ,缺点是:不注意下面的提示容易搞崩溃

#安装minicom
brew install minicom

#进入minicom配置模式
minicom -s

#选择Serial port setup
#Serial Device            改为:/dev/tty.usbserial
#Hardware Flow Control    改为:No

#选择Save setup as dfl 保存配置

#特别注意:退出minicom时使用 Esc + x 或 Esc + z 按 x 退出。否则会导致设备卡死,只能强制关机重启。

#打开minicom,直接输入
minicom

#minicom开启颜色支持
minicom -c on

再次强调,请务必按照推荐的退出方式操作。。。(有探索精神的同学请随意尝试)

2、USB下载口

jz2440_usb.jpg

使用USB下载口时,由于MacOS下没有驱动,所以使用libusb 配合 dnw2无驱写入工具,给开发板传输文件。

#首先安装libusb 以及 libusb-compat
brew install libusb
brew install libusb-compat

#克隆dnw源码
git clone https://github.com/DOTATONG/dnw

cd ./src/dnw/

#编译基于libusb开发的USB写入程序
gcc -o dnw2 dnw.c -lusb

#若以上编译语句无法使用,请按如下步骤进行编译
#查看libusb-compat的编译配置文件路径
brew list libusb-compat

#其中 libusb.pc 就是我们编译dnw2工具时需要用到的文件,将your_pkgconfig_path替换为上面得到的libusb.pc路径
gcc `pkg-config --cflags --libs your_pkgconfig_path/libusb.pc` -o dnw2 dnw2.c

#编译成功后即可使用dnw2下载文件至开发板
./dnw2 your_path/leds.bin

3、OpenJTAG驱动

jz2440_openjtag.png

通过观察发现,JZ2440的OpenJTAG烧写器使用的芯片是FTDI的FT2232D,直接去FTDI官网下载驱动 https://www.ftdichip.com/Drivers/D2XX.htm

按照说明文件的方法安装即可。

3.1、烧写工具openocd

开发板上电,把OpenJTAG接到PC后,另一头接开发板。

#安装openocd
brew install openocd

#安装telnet
brew install telnet

#创建openocd配置文件,也可这里下载 https://dotatong.cn/tools/openocd.cfg
vi openocd.cfg

#配置文件目录下,执行openocd命令,开启telnet服务
openocd

#连接telnet服务
telnet 127.0.0.1 4444

#先用nand probe探测
nand probe 0

#若出现 Addresstranslation failure ,是因为openocd有bug,本来dcache没有开,它认为了开了,并且认为MMU也开了,访问的每个地址都会进行转换,而又找不到页表,所以就出现转换错误。解决办法就是用:
reset;halt

#将开发板重启,注意,将reset;halt输在一行,中间用分号隔开,这样arm刚重启就暂停了,这个时候dcache肯定是关着的。这个时候再用:
nand probe 0

#nand flash擦除1M空间
nand erase 0 0 0x100000

#烧写leds.bin,需文件的绝对路径
nand write 0 your_path/leds.bin 0

#重启
reset

4、交叉编译工具

在学习开发板时,会涉及到裸机程序的编译、u-boot编译、linux内核编译等,经过嗵哥鼓捣研究后,在macOS下只找到能编译裸机程序的工具arm-none-eabi-gcc,而该工具并不能编译u-boot、linux内核等。故最终只能祭出神器docker,向强迫症患者刺上最后一剑。。。

Dockerfile拿走。。。

FROM centos:7

ENV TIMEZONE Asia/Shanghai

RUN yum -y install epel-release && \
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.bak && \
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.bak && \
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo && \
yum makecache && \
yum -y install make && \
yum -y install glibc.i686 && \
yum -y install bzip2 && \
yum -y install patch && \
yum -y install libstdc++-4.8.5-36.el7.i686 && \
yum -y install zlib-1.2.7-18.el7.i686 && \
yum -y install gcc && \
yum -y install gcc-arm-linux-gnu && \
yum clean all && \
ls /bin/|grep arm|cut -c 15-|xargs -t -I {} ln -s ./arm-linux-gnu-{} /bin/arm-linux-{} && \
curl -o /tmp/yaffs2utils.tar.gz https://dotatong.cn/tools/yaffs2utils.tar.gz && \
tar xzf /tmp/yaffs2utils.tar.gz -C /tmp/ && \
make -C /tmp/yaffs2utils/ && \
make install -C /tmp/yaffs2utils/ && \
rm -rf /tmp/yaffs2utils* && \
mkdir /work

WORKDIR /work

利用Dockerfile创建镜像、容器

#保存以上内容至文件Dockerfile

#用dockerfile创建镜像
docker build -t centos-arm-dev .

#用镜像创建容器,其中your_local_path为你想要挂载到容器内/work目录的路径
docker run -d --volume=your_local_path:/work --name=arm-dev centos-arm-dev /usr/sbin/init

#进入容器
docker exec -it arm-dev bash

至此,一套macOS下可用的嵌入式开发环境搞定。

不过,正所谓思路决定出路,有兴趣的小伙伴,可以直接尝试在macOS下利用docker搭建完全的开发环境。。。😂

文章作者:DOTATONG
发布日期:2019-06-27

评论

3 条

goodcatdog

博主你好,https://dotatong.cn/tools/openocd.cfg文件消失了,能否提供给我发一份
18253571750@163.com
感谢

回复 ·

DOTATONG 作者

你好,感谢提醒,下载已恢复,文件已发到你邮箱,希望能帮到你!

回复 ·

goodcatdog

已收到感谢

回复 ·

添加新评论