【米尔-瑞萨RZ/G2UL开发板-试用评测】开发环境搭建
<div class='showpostmsg'><div><strong>开发环境:</strong></div><div>主机:Ubuntu 20.04</div>
<div>开发板:MYD-YG2UL开发板</div>
<div>Windows 下有很多虚拟机软件,目前市面上流行的有 VMware 和 VirtualBox。 VMware 分为收费专业版 Workstation Pro 和非商用免费版 Workstation Player,推荐使用 Workstation Player。笔者这里使用的编译主机的Ubuntu 20.04,当然也可选择Fedora,Debian,CentOS 等 Linux 发行版的本地主机上进行开发。关于Workstation和Ubuntu安装笔者这里不在赘述,网上资料很多,笔者默认已经装好Workstation和Ubuntu。</div>
<h1>1 依赖库安装</h1>
<h2>1.1 更新主机的源列表</h2>
<div>$ sudo apt-get update</div>
<h2>1.2 安装依赖工具</h2>
<div>$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib</div>
<div>$: sudo apt-get install build-essential chrpath socat cpio python3 python3-pip</div>
<div>$: sudo apt-get install python3-pexpect xz-utils debianutils iputils-ping</div>
<div>$: sudo apt-get install python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev</div>
<div>$: sudo apt-get install pylint3 xterm libssl-dev libyaml-dev</div>
<div>需要注意的是,Ubuntu从20.04开始不再将python加入PATH环境变量,在编译安装一些软件会提示无法运行并提示找不到python,然而python3已安装,需要额外重定向。</div>
<div>手动创建软连接link,命令如下所示:</div>
<div>$ sudo ln -s /usr/bin/python3 /usr/bin/python</div>
<h1>2 TFTP服务环境搭建与测试</h1>
<div>TFTP简单文件传输协议,是一个基于UDP 协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于开销不大、不复杂的应用场合。</div>
<div>TFTP 协议专门为小文件传输而设计,只能从服务器上获取文件,或者向服务器写入文件,不能列出目录,也不能进行认证。</div>
<div>(1)下载并安装 tftp</div>
<div>$ sudo apt-get install openbsd-inetd</div>
<div>$ sudo apt-get install tftpd tftp</div>
<div>(2)新建tftp目录和改变其属性</div>
<div>$ sudo mkdir /tftpboot</div>
<div>$ sudo chmod 777 /tftpboot</div>
<div>(3)修改 /etc/inetd.conf文件</div>
<div>$ sudo vim /etc/inetd.conf</div>
<div>新增如下内容:</div>
<div>tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot</div>
<div>(4)启动tftp</div>
<div>$ sudo /etc/init.d/openbsd-inetd start</div>
<div>(5)本地测试</div>
<div>在/tftpboot/目录下新建一个文件test,输入内容,保存。然后打开另外一个终端,测试文件传输。</div>
<div>– 输入命令tftp 127.0.0.1</div>
<div>– 输入get test</div>
<div>– 输入q可以退出</div>
<div>– 退出后,使用ls命令可以发现当前目录下有test文件,如果这个文件和服务器中的test文件内容一模一样,表明服务器搭建成功</div>
<div></div>
<div>(6)开发板测试</div>
<div>开发板下载测试</div>
<div>#tftp -g -l test -r test 192.168.101.6</div>
<div>【注】-l后的文件是下载后文件名,可以自定义;-r后的是服务器的文件名。</div>
<h1>3 安装配置交叉编译工具链</h1>
<div>编译代码需要编译器,Linux系统的编译器是GCC,而Windows的C/C++编译器是Microsoft Visual C++,那么要想在Windows也能GCC等一系列编译工具,就需要安装MinGW。</div>
<div>MinGW 地址:<a href="http://www.mingw-w64.org/doku.php" target="_blank">http://www.mingw-w64.org/doku.php</a></div>
<div>MinGW,是Minimalist GNU for Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。</div>
<div>MinGW 是用于进行 Windows 应用开发的 GNU 工具链(开发环境),它的编译产物一般是原生 Windows 应用,虽然它本身不一定非要运行在 Windows 系统下(是的 MinGW 工具链也存在于 Linux、BSD 甚至 Cygwin 下)。说的通俗点,MinGW就是你在Windows下使用GNU工具链的一个编译工具。</div>
<div>MinGW编译的程序只能在X86上运行,不能运行在嵌入式的硬件平台,因为嵌入式平台大都是ARM体系结构,因此这就需要一个在Windows环境下能使用GNU编译ARM体系结构的编译工具,这也就是交叉编译工具。</div>
<div>所谓交叉编译工具就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在PC平台(X86 CPU)上编译出能运行在以ARM为内核的CPU平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到ARM CPU平台上才能运行。</div>
<div>做过嵌入式开发的朋友都知道,在嵌入式开发过程中有宿主机和目标机的角色之分:宿主机是执行编译、链接嵌入式软件的计算机;目标机是运行嵌入式软件的硬件平台。</div>
<div></div>
<div>嵌入式开发流程大致就是在宿主机完成目标的开发工具,使用功能交叉编译工具生成固件,将固件烧写到目标机,在开发初期,还需要在线调试等工作,这就需要诸如J-link等调试工具。</div>
<div>MYD-YG2UL属于ARM体系结构,在Windows环境下开发也需要借助交叉编译工具。</div>
<div>将SDK 压缩包拷贝到 Ubuntu 下的用户工作目录,然后解压文件,得到安装脚本文件。</div>
<div>$ tar -xvf sdk.tar.bz2</div>
<div>然后运行安装脚本。</div>
<div>$ ./poky-glibc-x86_64-myir-image-full-aarch64-myir-rzg2ul-toolchain-3.1.21.sh</div>
<div>SDK 默认被安装到/opt/poky/3.1.21目录下,当然也可更改安装目录。</div>
<div></div>
<div>安装完成后,使用以下命令设置环境变量,测试 SDK 是否完成:</div>
<div>$ source /opt/poky/3.1.21/environment-setup-aarch64-poky-linux</div>
<div>然后检查价差编译工具链是否安装成功。</div>
<div>$ $CC -v</div>
<div></div>
<div>最好的验证验证方法就是直接编译一个例程,我们就编译第一个裸机例程“hello.c”试试。</div>
<div>$ vim hello.c</div>
<div>#include <stdio.h></div>
<div>int main()</div>
<div>{</div>
<div>printf("Hello, MYD-YG2UL!\n");</div>
<div>return 0;</div>
<div>}</div>
<div>$ ${CC} hello.c -o hello</div>
<div>使用如下命令查看 hello文件信息:</div>
<div>$ file hello</div>
<div></div>
<div>从图中可以看到 hello是64位 LSB 的 ELF 格式文件,目标机架构为 ARM aarch64,,说明我们的交叉编译器工作正常。</div>
<div>最后将程序下载到开发板,修改用户权限后即可运行。</div>
<div>$ tftp -g -l hello -r hello 192.168.101.10</div>
<div></div>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> 感谢分享sdk的安装成编译的知识分享!ftfp能启用起来,那是太方便了。
页:
[1]