【瑞米派 Remi-Pi 】开发环境搭建与内核更新
<div class='showpostmsg'> 本帖最后由 fangkaixin 于 2024-4-17 18:57 编辑## 一、搭建开发环境
官方提供了两种开发方式,如下:
### 使用Yocto构建开发板镜像
1. **拷贝源码包**:将`myir-renesas-yocto.tar.bz2`源码包拷贝到本地环境并解压,或通过git拉取源码。
2. **设置环境变量**:执行 `source myir-remi-1g-environment.sh`。
3. **构建配置**:
DISTRO=poky MACHINE=myir-remi-1g
source layers/meta-myir-remi/scripts/myir-remi-1g-environment.sh build-remi-1g
4. **构建镜像**:运行 `bitbake myir-image-full -k`。
### 直接使用源码编译
1. **拷贝源码与工具链**:将`myir-renesas-linux.tar.bz2`与`sdk.tar.bz2`(编译工具链)分别拷贝到本地并解压。
2. **设置环境变量**:执行 `source /path/to/environment-setup-aarch64-poky-linux`。
3. **编译**:
make distclean
make ARCH=arm64 mys_g2lx_defconfig
make ARCH=arm64 Image dtbs -j16
## 二、通过以太网SCP更新设备树和Linux内核镜像
### 更新方法验证
1. **挂载分区**:执行 `mount /dev/mmcblk0p1 /mnt`。
2. **替换文件**:使用SCP命令将新编译出的文件替换到`mmcblk0p1`分区下:
scp root@192.168.40.123:/home/myir/linux/arch/arm64/boot/Image /mnt/
scp root@192.168.40.123:/home/myir/linux/arch/arm64/boot/dts/myir/mys-rzg2l-*.dtb /mnt
3. **重启系统**:`sync`, `reboot`
4. **查看,更新成功**
### Preempt RT 实时内核
1. **下载实时补丁**: 下载时选择最接近内核版本的即可,下载链接:`https://cdn.kernel.org/pub/linux/kernel/projects/rt/4.9/older/`
2. **为内核打入实时补丁**:
gunzip patch-5.10.83-rt58.patch.gz
patch -p1 < patch-5.10.83-rt58.patch
3. **更新编译选项**:`make ARCH=arm64 menuconfig` (使用了前次编译后.config文件)
4. **编译**:`make ARCH=arm64 Image dtbs -j16`
5. **更新内核和设备树**:通过以太网scp更新
6. **验证以及实时性能测试**
## 三、编译、部署与运行HelloWorld程序
hello_world.c
```c
#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
return 0;
}
```
Makefile
```makefile
# Makefile for HelloWorld application
# Project settings
PROJECT_NAME := hello_world
SRC_FILE := hello_world.c
TARGET_ARCH := arm64
REMOTE_USER := root
REMOTE_IP := 192.168.40.123
REMOTE_HOME_DIR := /home/root/
# Compiler and flags
CFLAGS := -Wall -O2
# Remote commands
SCP := scp
SSH := ssh
all: $(PROJECT_NAME)
$(PROJECT_NAME): $(SRC_FILE)
$(CC) $(CFLAGS) $^ -o $@
deploy:
$(SCP) $(PROJECT_NAME) $(REMOTE_USER)@$(REMOTE_IP):$(REMOTE_HOME_DIR)
run:
$(SSH) $(REMOTE_USER)@$(REMOTE_IP) 'cd $(REMOTE_HOME_DIR);chmod +x $(PROJECT_NAME); ./$(PROJECT_NAME)'
clean:
rm -f $(PROJECT_NAME)
.PHONY: all deploy run clean
```
1. **编译**:在终端中执行 make 命令,编译生成hello_world可执行文件。
2. **部署**:执行 make deploy,将编译好的hello_world程序通过SCP上传到目标设备。
3. **运行**:执行 make run,通过SSH远程登录目标设备并运行hello_world程序。
</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){
} </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> 这makefile的知识得学习学习,非常好呀! lugl4313820 发表于 2024-4-17 18:27
这makefile的知识得学习学习,非常好呀!
<p>感谢支持<img height="52" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan05.gif" width="48" /></p>
<p><code>run:</code></p>
<p><code>$(SSH) $(REMOTE_USER)@$(REMOTE_IP) 'cd $(REMOTE_HOME_DIR);chmod +x $(PROJECT_NAME); ./$(PROJECT_NAME)'</code></p>
<p><code>这样的命令怎么输入快捷,真得一点一点打吗</code></p>
秦天qintian0303 发表于 2024-4-18 09:10
run:
$(SSH) $(REMOTE_USER)@$(REMOTE_IP) 'cd $(REMOTE_HOME_DIR);chmod +x $(PROJECT_NAME); ./$( ...
<p>可以试试智能补全类的插件</p>
<p>楼主分享的技术知识内容详实,图文并茂,值得收藏学习</p>
chejm 发表于 2024-4-21 20:24
楼主分享的技术知识内容详实,图文并茂,值得收藏学习
<p><img height="52" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan05.gif" width="48" /></p>
页:
[1]