处理器启动

初涉soc,公司买的是平头哥的CK801核加一些外设。

由于项目安排原因,设计匆匆丢过来rtl,我根据原有的pyxis平台修改,纯粹菜鸟一个,啥也不懂,发现改完之后平台跑不起来。

tb中定义了两种处理方式,一是EFLASH,一是SRAM,在启动这两种方式前,分别都给ROM地址零初始化了EFlash的起始地址0x1000_0000、SRAM的起始地址0x0800_0000。

翻阅了平头哥提供的文档,了解了一下内容。

一,清空workdir,将lib目录下Makefile(整个编译过程的主控文件)、链接描述文件linker.lcf和初始化头文件crt0.s拷贝到workdir目录下。

1、Makefile:确定编译所需要使用的工具

                      设置C编译参数以及链接参数

                      设置链接库

                      编译过程:从*.c/*.s  -->  *.o  --> *.elf  --> *.hex  --> *.pat  

    在验证平台中,我需要准备的是*.c,即一些用例,eg.pwm_test.c,不外是pwm外设的时钟分频设置、占空比设置,使能pwm等,Makefile会使用编译工具将其转换为inst.pat,在tb.v中将inst.pat初始化到EFlash或SRAM。

扫描二维码关注公众号,回复: 7543797 查看本文章

2、Linker.lcf:链接描述文件,此文件在链接过程中向编译工具指示链接地址。

                      3块内存,分别用作ROM启动,指令存储器,数据存储器。

                      恒定将指令链接到0x0开始的地址,将数据链接到0x2000_0000开始的地址。

                      linker.lcf中的.text段是指令存储段,优先将crt0.o编译在最前面。由于crt0.o是初始化文件,程序的入口在这定义,所以一定要保证crt0.o是在指令段以及整块内存的最前面。

猜你喜欢

转载自www.cnblogs.com/camellia3371----/p/11721375.html