windows上搭建龙芯1c300B开发环境(eclipse+mysys2)

 

目录

思路简介

交叉编译工具链下载和安装

安装msys2

下载msys2

配置pacman

更新软件包数据

手动安装make

添加环境变量

编译

在命令行中编译龙芯1c库(或者裸机程序)

使用make编译

在eclipse中编译龙芯1c库(或裸机程序)

eclipse的下载和安装

新建Makefile项目

把龙芯1c库的源码加到工程中

在eclipse中编译(构建)

在eclipse中clean(清理)编译生成的目标文件

烧写固件(bin文件)到板子上

在线仿真工具——EJTAG

用ejtag单步调试白菜板

开源的EJTAG


 

 

思路简介

网上有很多用eclipse+msys2实现windows上开发环境的,本文也采用eclipse+msys2这种方案。

开发环境包括,代码编辑,代码编译,仿真等。其中,代码编辑不是问题,记事本都可以编辑,一般常用eclipse或者sourceinsight编辑代码。仿真暂不考虑。现在重点放在代码编译上。

虽然本文重点讨论龙芯1C300B,这里有必要提一下龙芯1C101。听说龙芯官方有龙芯1C101在windows上开发的全套工具(包括基于eclipse的IDE和基于ejtag的仿真器)。有网友在淘宝买了一个几十元(好像是七八十元,具体记不清了)的openOCD,可以替代官方的ejtag作为仿真器(为什么要替换官方的呢?因为贵,呵呵!)。

要想在windows上编译龙芯1c的代码,至少需要windows上的交叉编译工具链,然后还需要make。交叉编译工具链采用网友“老鼠”提供的,据说是君正的交叉编译工具链,反君正和龙芯同属mips系列,工具链可以通用也是正常的,经过初步测试可用,如有不能用的地方,可以在虚拟机里面用linux下的龙芯官方提供的交叉编译工具链编译。
IDE使用eclipse。由于龙芯1c库中已经有Makefile,所以只需要在eclipse中新建一个“Makefile项目”,然后工具链选择“MinGW GCC”即可。
本文以在windows上下编译基于龙芯1c库的裸机程序为例。分别讲解交叉编译器的安装,make的安装,eclipse的安装、在命令行下编译和eclipse下编译,以及烧写固件bin文件。

龙芯1c库的源码的下载地址https://gitee.com/caogos/OpenLoongsonLib1c

windows上的交叉编译工具链,eclipse,以及CH341A驱动和烧写软件的下载地址https://pan.baidu.com/s/1J9c4e2Q6OeYEgTM2rHPcfA

 

交叉编译工具链下载和安装

找到“mips-mingw32.zip”,解压后,剪切到目录“D:\Program Files (x86)”内(也可以其它目录,根据自己喜好),然后进入其中的bin目录,如下

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第1张图片

将上图中的目录添加到环境变量中,如下

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第2张图片

在任意一个文件夹内空白处,按住shift键,右击鼠标,在弹出的下拉列表中,选择“在此处打开命令窗口”,然后运行命令“mips-linux-gnu-gcc -v”测试一下,如果能够正确打印出版本号,则说明安装成功(环境变量添加成功),如下

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第3张图片

 

安装msys2

因为龙芯1c库使用Makefile来管理源码文件,所以需要使用make来执行Makefile,进而实现编译。

下载msys2

下载地址是http://mirrors.ustc.edu.cn/msys2/distrib/ 或者官网http://www.msys2.org/

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第4张图片

选择一个即可。如果是32位的windows操作系统,则选i686的,如果是64位的windows操作系统,则选x86_64的。

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第5张图片

配置pacman

参考https://mirrors.tuna.tsinghua.edu.cn/help/msys2/修改配置文件

编辑 /etc/pacman.d/mirrorlist.mingw32 ,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
编辑 /etc/pacman.d/mirrorlist.mingw64 ,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
编辑 /etc/pacman.d/mirrorlist.msys ,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
然后执行 pacman -Sy 刷新软件包数据即可。

我把msys2安装在D盘的,这三个配置所在的目录是“D:\msys64\etc\pacman.d”,如下修改

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第6张图片

更新软件包数据

双击msys2.exe

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第7张图片

然后执行 pacman -Sy 刷新软件包数据即可,如下图

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第8张图片

手动安装make

执行命令“pacman -S make”安装make,如下

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第9张图片

安装好后,在目录“D:\msys64\usr\bin”下有make.exe文件,如下

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第10张图片

添加环境变量

把make.exe所在目录“D:\msys64\usr\bin”添加到操作系统的环境变量path中,如下

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第11张图片

然后再命令窗口中运行一下,如果执行“make -v”能够正确提示版本号,则说明安装成功

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第12张图片

好,到此,可以进行编译了。如果已经安装好了make,则不需要采用备用方案,不需要再安装mingw。直接跳到编译那一章节。

除了make之外,Makefile中可能还用到了 rm 和 cp 命令,这两个命令属于常用命令,msys2安装好后,默认就有,不需要像make那样手动安装。在同一个目录下,不相信的可以自己确认一下。当然如果发现没有,也可以参考make的安装方式,手动安装。

执行命令“rm --help”,看看是否能够执行成功

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第13张图片

说明能够正确执行rm命令

除了rm命令外,其它命令应该也可以用了。比如cp等。

编译

在命令行中编译龙芯1c库(或者裸机程序)

使用make编译

下载龙芯1c库,然后进入src目录,如下

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第14张图片

 

在目录内空白处,按住shift的同时,单击右键,选择“在此处打开命令窗口”,就可以打开命令窗口,如下

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第15张图片

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第16张图片

此时,已经编译完成,生成了bin文件,如下图所示

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第17张图片

这个bin文件就是需要烧写到板子上去的。至于如何烧写,在后面讲解。

执行make clean后,如下图

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第18张图片

再看看目录内的bin文件,是不是已经被删除了。

 

在eclipse中编译龙芯1c库(或裸机程序)

eclipse的下载和安装

这里以4.6.3为例,可以到eclipse官网下载,也可以到我的百度网盘下(前面有网盘链接),具体的版本如下

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第19张图片

新建Makefile项目

龙芯1c库代码中已经包含了Makefile文件,这里可以直接使用。即新建一个空的基于Makefile的项目。如下图

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第20张图片

 

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第21张图片

 

请记住此时选择的路径“D:\TDDownload\eclipse_workplace\test”(如果你愿意,可以改为任意路径),后面会用到。项目建好后,如下

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第22张图片

 

默认有几个include,反正我们不会用到它,这里直接忽略它的存在,即可。

再去项目文件夹“D:\TDDownload\eclipse_workplace\test”看看,如下

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第23张图片

 

把龙芯1c库的源码加到工程中

从龙芯1c库中把(src目录内的)源码拷贝到eclipse项目所在文件夹内,如下

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第24张图片

然后,在eclipse界面中,按F5刷新一下,eclipse会自动扫描项目文件夹,自动将新拷贝的源文件加入项目中,此时的eclipse截图如下

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第25张图片

1c库中的源码为utf8格式的,eclipse也需要修改为utf8的,否则可能会出现乱码。单击菜单“window”下的“preferences”,然后按照下图设置

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第26张图片

然后打开源码目录app下的main.c看看,如下

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第27张图片

 

源码中已经有一些测试用例,常见的每个功能几乎至少都有一个测试用例,需要使用那个,就把注释取消。然后编译,烧写到板子上即可看到效果。

 

在eclipse中编译(构建)

选择菜单“project”下的“build project”即可编译,或者使用下图箭头所指的快键按钮也可以编译。

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第28张图片

 

编译后,eclipse下的console窗口会有如下打印。

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第29张图片

 

注意,此时左边的导航栏中已经出现了bin文件了,console窗口中的打印和命令行下的打印是完全一样的。可以去项目文件夹看看,是不是已经生成了bin文件,如下

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第30张图片

 

在eclipse中clean(清理)编译生成的目标文件

如果需要把bin文件清理掉,可以使用菜单“project”下的菜单“clean...”,如下图所示

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第31张图片

eclipse的console窗口的打印

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第32张图片

可以到文件夹中看看bin文件是否被删掉了。

 

烧写固件(bin文件)到板子上

这里以白菜板为例。目前白菜板是通过CH341A把bin文件烧写到板子上的。通过如下软件烧写

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第33张图片

 

首先,单击“打开”按钮,把bin文件打开;如果白菜板已经和电脑连通了,那么按钮“自动”会是可用的,目前是灰色的,因为我没连白菜板。当连上后,单击按钮“自动”即可。

CH341A的驱动和烧写软件的下载地址在前文已经给出。

如果已经用usb将白菜板接到了电脑上,可是按钮“自动”仍然是灰色的。这时候,请先把白菜板断电(拔掉usb),再拨动白菜板右上角的红色的拨码开关,拨到另外一边,再上电(接上usb)。此时按钮“自动”就应该可以用了。

白菜板上的usb有三个功能:供电,USB转TTL串口,烧写固件。

其中USB转TTL串口和烧写固件是板子上芯片CH341A的两个功能,两种工作模式,一个时刻只能处于一种模式。也就是说CH341A要么用作串口,用于调试,打印信息;要么用来烧写固件bin文件。这两种模式通过白菜板右上角的红色的拨码开关来选择。

windows上搭建龙芯1c300B开发环境(eclipse+mysys2)_第34张图片

 

在线仿真工具——EJTAG

用ejtag单步调试白菜板

据说,龙芯官方的ejtag可以用来单步调试白菜板,但目前(2019年9月)还只能是命令行下,不过可以在windows的命令行下。下一步就等那位大佬能把eclipse和ejtag结合起来,这样就可以在eclipse单步调试白菜板。

貌似白菜板还有个bug,要想使用ejtag,需要先给白菜板上电,然后再给ejtag上电。虽然这个有点麻烦,但至少能用ejtag调试了。

开源的EJTAG

据说,龙芯官方的某博把ejtag的固件放出来了,然后有龙芯爱好者依据官方的ejtag抄板了,并把这些资料开放出来了,我备份到了我的gitee里面。

https://gitee.com/caogos/loongson_ejtag

其中,ejtag的原理图和PCB在立创EDA上画的,也保存立创EDA上的,可以直接在立创EDA上搜”龙芯 ejtag“,我也备份到了我的立创EDA账户下,具体信息在gitee的readme里面有说明。

另一篇文章讲了《手焊白菜板》的焊接技术,如果能手焊白菜板了,那么再手焊一个EJTAG。

 

感谢网友“老鼠”提供交叉编译工具链;

感谢网友“小子”提供eclipse编译1c库的方法;

感谢网友孙老师提供mingw32的安装方法。

感谢阅读!

 

 

 

你可能感兴趣的:(龙芯1c裸机编程,龙芯1c库)