1、开发板介绍
OK3576J-C 是飞凌基于瑞芯微 RK3576工业级处理器推出的核心板 + 底板方案。RK3576 为 4×A72+4×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", encoding="gbk") as f: lines = f.readlines() except UnicodeDecodeError: print("GBK解码失败,尝试UTF-8...") with open(md5_list_file, "r", encoding="utf-8") as f: lines = f.readlines() for line_num, line in enumerate(lines, start=1): line = line.strip() if not line: continue # 分割:第一个空白为哈希,后面全部为文件名(文件名可带空格) parts = line.split(maxsplit=1) 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-C&C21使用手册”中也详细介绍了,包括搭建新的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 //在当前位置解压压缩包参数拆解
-x:extract,解压-v:verbose,详细输出,打印每一个正在解压的文件(想看解压日志,不想刷屏可以去掉-v)-f:指定压缩包文件,必须放最后,后面紧跟文件名
3.4.5、切换工作目录到SDK 内的buildroot目录
cd /home/forlinx/work/OK3576-linux-source/buildroot3.4.6、在 buildroot 目录下解压 dl.tar.bz2
tar -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设备。
擦除芯片:
选择固件:
升级: