基于飞凌OK3576J-C开发板-1、开发环境搭建
1、开发板介绍OK3576J-C 是飞凌基于瑞芯微 RK3576工业级处理器推出的核心板 底板方案。RK3576 为 4×A724×A53 八核架构内置 6TOPS NPU适合 AI 视觉、工业控制、边缘网关等场景SDK 内核版本为 Linux 6.1支持 Forlinx Desktop 24.04、Debian、Android14。开发板正面开发板反面接口定义正面接口定义反面2、开发资料2.1、资料介绍开发资料比较丰富包含打包好的ubuntu22.04开发环境、sdk源码、镜像、使用手册开发教程测试用例特别是硬件资料中除了原理图还包含了底板的整个工程文件包含原理图和pcb文件这点特别值得点赞除此之外开发资料的下载还帮忙开通百度网盘高速下载权限这个太贴心了2.2、MD5校验下载下来的开发环境、镜像、源码都提供了md5校验为了方便进行md5校验我弄了个基于python的md5校验程序使用方法如下a、将verify_md5.py放在同一个目录下b、修改红框中的文件名改为对应记录md5的文件名c、双击运行verify_md5.py即可。注意需要提前按照了python还有就是因为文件比较大会消耗一定的时间电脑性能好的话1分钟左右差的画就不好说了。运行效果特意改错sdk_md5sum.txt记录的md5值验证d、verify_md5.py源码为import hashlib import os import sys def calc_md5(file_path: str) - str: 计算文件MD5返回小写哈希字符串 hash_md5 hashlib.md5() with open(file_path, rb) as f: for chunk in iter(lambda: f.read(65536), b): hash_md5.update(chunk) return hash_md5.hexdigest().lower() def wait_any_key(): 等待用户按任意键Windows / Linux通用 if sys.platform win32: os.system(pause) else: input(按回车键退出...) def main(): md5_list_file sdk_md5sum.txt fail_count 0 if not os.path.exists(md5_list_file): print(f错误找不到 {md5_list_file}) wait_any_key() return # 自动尝试编码优先gbk失败切换utf-8 lines [] try: with open(md5_list_file, r, encodinggbk) as f: lines f.readlines() except UnicodeDecodeError: print(GBK解码失败尝试UTF-8...) with open(md5_list_file, r, encodingutf-8) as f: lines f.readlines() for line_num, line in enumerate(lines, start1): line line.strip() if not line: continue # 分割第一个空白为哈希后面全部为文件名文件名可带空格 parts line.split(maxsplit1) if len(parts) ! 2: print(f第{line_num}行格式错误跳过: {line}) continue ref_hash, filename parts ref_hash ref_hash.lower() if not os.path.exists(filename): print(f⚠️ 【缺失】 {filename} : 文件不存在) fail_count 1 continue # 计算文件md5 real_hash calc_md5(filename) if real_hash ref_hash: print(f✅ {filename} : OK) else: print(f❌ {filename} : FAILED) print(f 预期:{ref_hash}) print(f 实际:{real_hash}) fail_count 1 print(f\n 校验结束失败总数{fail_count} ) wait_any_key() if __name__ __main__: main()3、开发环境搭建3.1、虚拟机VMware安装这个比较简单所以这步过。3.2、加载飞凌提供的ubuntu22开发环境这个在网页版的“OK3576-CC21使用手册”中也详细介绍了包括搭建新的Ubuntu开发环境也都有介绍。所以这步过。3.3、源码拷贝开发环境搭建好后需要将程序源码拷贝到ubuntu22的工作目录飞凌提供的环境已经建了一个work目录可以直接使用。需要拷贝的内容如下程序源码用户资料\2-镜像及源码\1-源码\OK3576-linux-source.tar.bz2.0*buildroot软件包用户资料\2-镜像和源码\1-源码\dl.tar.bz2注意点1-源码目录下会有3个文件夹根据芯片是否是工业级如果工业级就是3576J此时在1和3文件夹然后看内存如果内存不是妙存就是文件夹1了。这个是科摩思内存这个是妙存3.4、压缩包合并与解压3.4.1、进入work目录3.4.2、分片压缩包合并cat OK3576-linux-source.tar.bz2.0* OK3576-linux-source.tar.bz2所有以OK3576-linux-source.tar.bz2.0开头的分卷文件bz2.00、bz2.01、bz2.02……按顺序拼接合并成一个完整的 tar.bz2 压缩包。合并后9G左右比较耗时需要几分钟。3.4.3、解压压缩包tar -vxf OK3576-linux-source.tar.bz2 //在当前位置解压压缩包参数拆解-xextract解压-vverbose详细输出打印每一个正在解压的文件想看解压日志不想刷屏可以去掉-v-f指定压缩包文件必须放最后后面紧跟文件名3.4.5、切换工作目录到SDK 内的buildroot目录cd /home/forlinx/work/OK3576-linux-source/buildroot3.4.6、在 buildroot 目录下解压 dl.tar.bz2tar -vxf ../../dl.tar.bz2 //在buildroot下解压dl.tar.bz23.5、编译测试3.5.1、切换到 OK3576 整套 SDK 源码的根目录cd /home/forlinx/work/OK3576-linux-source3.5.2、build.sh一键编译总脚本在源码路径内提供了编译脚本 build.sh运行该脚本对整个源码进行编译./build.sh3.5.3、./build.sh启动的配置选择菜单选中OK3576_C_buildroot_defconfig脚本会加载 buildroot 配置开始编译 u-boot、kernel、buildroot 根文件系统。出现下面提示就标识编译成功了3.5.4、进入rockdev目录查看镜像链接cd /home/forlinx/work/OK3576-linux-source/rockdev ls -lh3.5.5、rootfs.ext4 镜像SDK 内置预编译好的 rootfs.ext4 镜像路径prebuilts/forlinx/rk3576/buildroot/rootfs.ext4。如果只是调试内核、uboot 时SDK 会直接复用这个预编译根文件系统节省大量编译时间。 如果修改 Buildroot 配置、添加自定义程序想要重新生成 rootfs一定要删除该预编译 rootfs.ext4 文件否则 buildroot 不会重新编译根文件系统修改不会生效# 如果你要修改buildroot需要删除预编译rootfs rm prebuilts/forlinx/rk3576/buildroot/rootfs.ext43.6、RKDevTool烧写测试这是瑞芯微提供的一款开发工具使用前将其解压到全英文路径下。3.6.1、OTG驱动安装驱动安装工具在“用户资料\Linux\3-工具” 目录下的“DriverAssitant_v5.11.zip”解压后以管理员权限运行然后点击驱动安装即可。3.6.2、RKDevTool工具进行烧写测试用Type-C线连接开发板“接口定义正面”这张图右上角的usb3.0口Type-C0口和主机按住开发板的recovery键不要松开然后按一下reset键系统复位大约两秒后松开recovery键。瑞芯微开发工具上将提示发现loader设备。擦除芯片选择固件升级