2.4 开发板SDK和工具链获取
注意!!!:如果使用百问网提供的虚拟机,它里面已经安装了SDK、工具链,无需参照本节进行任何操作。
这个SDK中除了包含一个独立的交叉开发工具链外还提供 qmake,包含目标平台的sysroot,Qt应用开发所依赖的库和头文件等。用户可以直接使用这个SDK来建立一个独立的开发环境,单独编译Flash-Writer,Bootloader,Kernel或者编译自己的应用程序。
在开始前请线准备好Ubuntu虚拟机,虚拟机版本要求为 Ubuntu20.04,您可自行下载并使用VMware安装虚拟机。
1. 安装必备软件包
打开Ubuntu20.04虚拟机镜像后,进入系统中,打开终端,执行以下命令安装编译所需的软件包:
sudo apt-get update
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib
sudo apt-get install build-essential chrpath socat cpio python3 python3-pip
sudo apt-get install python3-pexpect xz-utils debianutils iputils-ping
sudo apt-get install python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev
sudo apt-get install pylint3 xterm libssl-dev libyaml-dev
2. 安装SDK包
在资料中已经包含一个编译好的SDK包,位于网盘目录:
02_开发工具\系统SDK
将SDK包拷贝至虚拟机中新建的remi-sdk目录下,并执行以下命令进行解压:
ubuntu@ubuntu2004:~/remi-sdk$ ls
sdk.tar.bz2
ubuntu@ubuntu2004:~/remi-sdk$ tar -xvf sdk.tar.bz2
解压完成后,可以看到有名为sdk文件夹,进入该文件夹,并执行该目录下的脚本执行后,会自动配置SDK的安装路径环境变量配置脚本。
ubuntu@ubuntu2004:~/remi-sdk$ cd sdk/
ubuntu@ubuntu2004:~/remi-sdk/sdk$ ./poky-glibc-x86_64-myir-image-full-aarch64-myir-r
emi-1g-toolchain-3.1.20.sh
执行完成后,下面来测试一下是否可用,执行下面两行命令后,可用看到对应的工具链信息。
ubuntu@ubuntu2004:~/remi-sdk/sdk$ source /opt/remi-sdk/environment-setup-aarch64-pok
y-linux
ubuntu@ubuntu2004:~/remi-sdk/sdk$ $CC -v
Using built-in specs.
COLLECT_GCC=aarch64-poky-linux-gcc
…
2.5 创建与体验第1个应用程序
2.5.1 编写程序
在Windows编写,使用filezilla上传,编译。使用scp复制到板子上,运行。hello.c的源码如下:
/* 执行命令: ./hello weidongshan
* argc = 2
* argv[0] = ./hello
* argv[1] = weidongshan
*/
int main(int argc, char **argv)
{
if (argc >= 2)
printf("Hello, %s!\n", argv[1]);
else
printf("Hello, world!\n");
return 0;
}
2.5.2 编译程序
在Ubuntu中可以执行以下命令编译、执行:
gcc -o hello hello.c
./hello
Hello, world!
./hello weidongshan
Hello, weidongshan!
上述命令编译得到的可执行程序hello可以在Ubuntu中运行,但是如果把它放到ARM板子上去,它是无法执行的。因为它是使用gcc编译的,是给PC机编译的,里面的机器指令是x86的。
我们要想给ARM板编译出hello程序,需要使用交叉编译工具链。
执行以下命令编译程序:
source /opt/remi-sdk/environment-setup-aarch64-poky-linux
$CC -o hello hello.c
假设设置开发板的IP为:192.168.5.9,上传程序到开发板上
scp ./hello root@192.168.5.9:/mnt/
2.5.3 在板子上运行程序
使用串口登录开发板的终端,进入/mnt目录运行程序:
root@myir-remi-1g:~
root@myir-remi-1g:/mnt
hello
运行程序:
root@myir-remi-1g:/mnt# ./hello
Hello, weidongshan!
2.6 单独编译与更新内核
2.6.1 编译内核
在百问网提供的虚拟机里,已经有了内核源码,如下解压(虚拟机里可能已经解压,那么你无需再次解压):
ubuntu@ubuntu2004:~/remi-pi$ ls
myir-renesas-linux.tar.bz2
ubuntu@ubuntu2004:~/remi-pi$ tar -xvf myir-renesas-linux.tar.bz2
进入源代码目录,加载SDK环境变量到当前shell:
cd myir-renesas-linux/
source /opt/remi-sdk/environment-setup-aarch64-poky-linux
在myir-renesas-linux目录下编译源代码:
make distclean
make ARCH=arm64 mys_g2lx_defconfig
make ARCH=arm64 Image dtbs -j4
等待编译完成后,拷贝设备树和内核Image到新建的build 的目录下,用于后续传输至开发板端。
mkdir -p ../build
cp arch/arm64/boot/dts/myir/mys-rzg2l-*.dtb ../build/
cp arch/arm64/boot/Image ../build/
2.6.2 更新内核和设备树
把/dev/mmcblk0p1挂载到/mnt目录,在开发板执行如下:
root@myir-remi-1g:/
假设设置开发板的IP为:192.168.5.9,在Ubuntu终端中 remi-pi目录下将build目录中的Image与dtb上传到开发板上:
scp ./build/Image root@192.168.5.9:/mnt
scp ./build/*.dtb root@192.168.5.9:/mnt
传输完成后在开发板执行如下命令重启:
root@myir-remi-1g:~
root@myir-remi-1g:~
重启后,系统会自动使用刚才的设备树和内核启动开发板。
如您在使用瑞萨MCU/MPU产品中有任何问题,可识别下方二维码或复制网址到浏览器中打开,进入瑞萨技术论坛寻找答案或获取在线技术支持。
https://community-ja.renesas.com/zh/forums-groups/mcu-mpu/
未完待续
推荐阅读
即刻预约 | 瑞萨RZ/G通用MPU研讨会,现场送瑞米派!
VLP中添加客户的RZ/G2L板子编译
RZ/V2L ISP实现方式及功能简介