杭州企业自助建站,卡片式网站模板下载,没有地址可以注册公司吗?,多用户wordpress前言 #xff08;1#xff09;PLCT实验室实习生长期招聘#xff1a;招聘信息链接 #xff08;2#xff09;本来是想在Milkv-duo上跑rtthread的#xff0c;做了很多努力#xff0c;一直没有结果。虽然不知道最终能不能成功做出来#xff0c;还是把自己的相关努力分享出来…前言 1PLCT实验室实习生长期招聘招聘信息链接 2本来是想在Milkv-duo上跑rtthread的做了很多努力一直没有结果。虽然不知道最终能不能成功做出来还是把自己的相关努力分享出来如果也有想做这方面努力的大佬也可以看看此篇博客能不能提供一点点帮助吧。 3在看本文之前请先了解Milk-V Duo移植rt-thread smart如何自己生成fip.bin在Milkv-duo上跑freertos 前期准备 1因为D1S和Milkv-duo都是C906内核的所以说mentor让我从D1S已经移植好的rtthread仓库开始努力。 下载交叉编译工具链 1首先我们需要下载工具链 2下载了之后上传到Linux中输入如下命令进行解压 tar -xvzf riscv64-elf-gcc-thead_20200528.tar.gz下载d1-nezha-rtthread仓库 1下载d1-nezha-rtthread仓库仓库进入d1-nezha-rtthread/bsp/d1-nezha目录中将rtconfig.py文件中的EXEC_PATH替换成自己的编译工具链即可。 git clone https://github.com/bigmagic123/d1-nezha-rtthread.git
cd d1-nezha-rtthread/bsp/d1-nezha
vim rtconfig.py2先清除环境然后直接编译。最终生成rtthread.bin文件 scons -c
scons -j10测试尝试 1还不会合成fip.bin的朋友可以先看看如何自己生成fip.bin在Milkv-duo上跑freertos 注意一些上面链接中包含一些需要修改的部分这里不做赘述。所以请各位先生成fip.bin在Milkv-duo上跑freertos测试仓库是否无误。 直接将d1-nezha-rtthread的bin文件合成fip.bin 1虽然我知道这样不行但还是测试一下。直接将d1-nezha-rtthread仓库生成的rtthread.bin文件合成进入fip.bin中。 2最终合成的fip.bin文件传输进SD卡然后放在Milkv-duo上跑发现最终卡在了hehe部分表示跑进了rtos.bin但是程序不对。很显然这是正常的因为D1S和Milkv-duo的串口寄存器地址都不一样。 # d1-nezha-rtthread仓库路径
cd ${d1-nezha-rtthread_DIR}
cp rtthread.bin rtos.bin
mv rtos.bin ${duo-toolbox_DIR}/debugloader/duoRVOS
# 进入duo-toolbox仓库路径
cd ${duo-toolbox_DIR}/debugloader/
export PATHpwd/../host-tools/gcc/riscv64-linux-musl-x86_64/bin:$PATH
export PATHpwd/../host-tools/gcc/riscv64-elf-x86_64/bin:$PATH
cd duoRVOS/
make clean
make
cd ../../fip/
cp ../debugloader/duoRVOS/os.bin .
make fsbl-build使用rtthread官方仓库cv1800b生成的bin文件 1因为rtthread官方仓库有一个cv1800b的bsp但是这个bsp包只能跑rtthread smart版本。可能会有朋友要说了我们可以通过scons --menuconfig来调整为rtthread标准版。但是我测试之后发现不行猜测原因是duo-toolbox仓库删掉了opensbi的一些信息但是rtthread官方仓库无论是smart版本还是标准版都会调用这部分函数。因此最终会卡死在sbi_call函数中。 2知道不行为什么还要测试呢实践出真知麻也许是我哪里操作错误了呢这样各位大佬也可以指出来。 如果要进行这个测试建议先在大核上跑smart版本。 相关教程Milk-V Duo移植rt-thread smart 3先按下面方法把smart版本修改为标准版。 因为我的目标是Milkv-duo的小核跑rtthread而小核没有MMU因此只能跑标准版。 cd ${rt-thread_DIR}/bsp/cv1800b
scons --menuconfig4修改版本之后指向如下操作。 # rt-thread官方仓库的cv1800b路径中
cd ${rt-thread_DIR}/bsp/cv1800b
scons -c
scons -j10
# 这里需要你指定riscv64-linux-musl-x86_64工具链路径
export PATH${riscv64-linux-musl-x86_64_DIR}/bin:$PATH
riscv64-unknown-linux-musl-objcopy -O binary rtthread.elf rtos.bin
mv rtos.bin ${duo-toolbox_DIR}/debugloader/duoRVOS
# 进入duo-toolbox仓库路径
cd ${duo-toolbox_DIR}/debugloader/
export PATHpwd/../host-tools/gcc/riscv64-linux-musl-x86_64/bin:$PATH
export PATHpwd/../host-tools/gcc/riscv64-elf-x86_64/bin:$PATH
cd duoRVOS/
make clean
make
cd ../../fip/
cp ../debugloader/duoRVOS/os.bin .
make fsbl-build5最终合成的fip.bin文件执行之后会卡死最终返回一个程序卡死的地址。 注意你的这个地址可能和我不一样但是通过反汇编查看都是卡死在同一个函数。具体原因不清楚。 6生成反汇编文件然后根据E:ra返回的地址可以查看到卡死位置的前一行指令是一个跳转指令。根据这条跳转指令可以发现最终是在sbi_call函数中卡死。之后和mentor交流之后得出结论应该是duo-toolbox仓库opensi的问题。 riscv64-unknown-linux-musl-objdump -d rtthread.elf rtthread.asm仅修改d1-nezha-rtthread的driver中的drv_uart文件 1和mentor交流之后他让我版本回退然后再试试。于是我先进行版本回退然后将rtthread中的drv_uart文件覆盖d1-nezha-rtthread的drv_uart文件进行测试。 2结果依旧卡死在hehe。 git reset --hard a310aac5fb12b2fc7667014057843ebc16f5daf8
cp rtthread.bin rtos.bin
mv rtos.bin ${duo-toolbox_DIR}/debugloader/duoRVOS
# 进入duo-toolbox仓库路径
cd ${duo-toolbox_DIR}/debugloader/
export PATHpwd/../host-tools/gcc/riscv64-linux-musl-x86_64/bin:$PATH
export PATHpwd/../host-tools/gcc/riscv64-elf-x86_64/bin:$PATH
cd duoRVOS/
make clean
make
cd ../../fip/
cp ../debugloader/duoRVOS/os.bin .
make fsbl-build直接将drivers全部修改 1将rtthread仓库的cv1800b中的drivers文件夹直接覆盖d1-nezha-rtthread的driver文件夹。编译出现如下问题。 2之后开始尝试开始查找ioremap.h文件先查找哪些文件中包含了ioremap.h。结果发现drivers/drv_gpio.c数据库文件.sconsign.dblitebuild/kernel/components/mm/ioremap.o中有ioremap.h内容。因此我们可以推断出应该是和ioremap.o有关系。 grep ioremap.h -r3于是我们尝试对比d1-nezha-rtthread和rtthread仓库中的build/kernel/components路径内容发现d1-nezha-rtthread中没有mm文件夹。根据ioremap.h这个名字我们大概可以推断出这个应该是和用于实现与物理内存地址相关的输入/输出I/O内存映射的可能与MMU有关。 参考文章 1Github d1-nezha-rtthread仓库 2交叉编译工具链网址 3面包板社区教你动手移植RT-Thread到国产MCU 4RT-Thread论坛【国产MCU移植】移植 RT-Thread 到 MM32F103xx 芯片 5B站高手版如何移植RT-Thread到GD32单片机上非studio版 6C站Milk-V Duo移植rt-thread smart 7C站如何自己生成fip.bin在Milkv-duo上跑freertos 8C站Milk-V Duo移植rt-thread smart 感谢人员 1感谢PLCT的王俊强老师的指导。 2感谢张鹏大佬的指导。