交叉编译程序为二进制指令存储于SD卡,C实现SD卡读取,将指令搬移到开发板并执行
- Vivado 2019.1
- Modelsim SE-64 10.7
- Verilog
- 装有Ubuntu 18的WSL 1
- 其它编译链见三级存储实验报告.pdf 交叉编译环境搭建 部分
《自己动手写CPU》课后完整CPU代码
我们知道,网上的SD卡协议的Verilog实现有很多,但是硬件编程确实相对软件编程要更令人恶心。
如果能仿照树莓派那种,把读写操作用C语言实现,那么开发效率会高很多。
更多详细信息见三级存储实验报告.pdf
接口实现在bootloader_cross_compile/course_design.srcs/sources_1/new/SD_soft.v
SD卡读写协议实现在makefile_cross_compile/BOOT.c
交叉编译C语言程序为二进制指令,保存为.coe文件
交叉编译环境搭建方法具体见三级存储实验报告.pdf 交叉编译环境搭建 部分
C实现SD卡读取,将指令搬移到开发板并执行
把结果输出到七段数码管的地址空间中,就可把读到的32位指令的十六进制编码显示:
*((uint *)SEG_DA) = *p_text;
中间空循环以延迟时间,使得能看清七段数码管的结果:
for(int k=0;k<1000000;k++);
上板后,七段数码管能看到指令,可以和coe文件进行比对,可以说明是正确的:
SD卡型号不同可能导致结果失败,原因未明。
更多信息见三级存储实验报告.pdf
尬吹可见三级存储实验答辩ppt.pdf