文章
  • 文章
搜索
首页 >> 技术文档 >>转帖专区 >> AG32芯片内的两个核和两个bin
详细内容

AG32芯片内的两个核和两个bin

AG32芯片内的两个核和两个bin

 

一、概述

与传统单核芯片(如:ST系列)不同,AG32整颗芯片包含两个核:mcu和cpld。

这里的mcu核已经相当于ST的整颗芯片。而CPLD核是比普通芯片多出来的那个核。

这两个核是相互独立的(各自编译、各自下载),又可以相互连通起来(信号连通)共同工作。

所以,AG32工程会编译出来2个bin。一个是代码的bin,一个是逻辑的bin,称之为code.bin和logic.bin。最终使用时,需要把这两部分的bin都烧录进去,芯片才能工作起来。

mcu编译出来bin容易理解,在VScode下点编译就可以了。

cpld的bin,则根据使用方式的不同,生成方式也会不同。参照以下介绍。

.

二、两个bin怎么生成

根据使用预期的不同,分成三种情况:

1.只使用mcu部分,不使用cpld部分;

2.同时使用mcu和cpld来联合编程;

3.只使用cpld部分,不使用mcu部分;

首先说明的是,以上3种方式都是会生成2个bin的。只不过情况1和情况3生成出来的第二个bin,是系统自动做的,用户无感而已。

分别说明:

情况1:如果芯片中只使用mcu不使用cpld:

此时,VE文件里只配置mcu用到的PIN脚即可。

这种情况下,vscode工程中点“upload LOGIC”时,会自动生成默认logic(该logic中“用户逻辑”为空而已),并编译出bin,再烧录,一键完成全过程。(这里的logic可以认为是cpld.bin)

整个过程中,logic部分对开发者来说是无感的。

情况2:如果芯片中同时使用mcu和cpld:

这种开发过程参照 mcu+cpld联合开发 ,这里只简要描述cpld.bin的生成。

这种模式下,VE文件里需要配置 mcu和pin之间、mcu和cpld之间、cpld和pin之间 的信号关联。

然后在VScode下点“prepare LOGIC”按钮,会为开发者生成CPLD的空的框架工程。开发者需要在这个框架下完成cpld逻辑的编写。这个编写调试中,开发者持有主动权。等cpld逻辑全部开发完成,自己编译出bin。这个bin就是“情况1”中自动生成出来的那个bin。

生成cpld.bin以后,烧录就又回到VScode下,仍然是点“upload LOGIC”去烧录。

情况3:如果芯片中只使用cpld不使用mcu:

这种开发过程参照 CPLD开发 ,这里也只是简要描述bin的生成。

这种模式下,开发过程是在quartus环境下完成的,首先是生成cpld.bin运行调试。而mcu的bin则是自动生成的。

“情况1”刚好相反:cpld.bin是自己调试生成,mcu.bin是系统自动生成。

.

三、两个bin怎么调试和烧录

mcu的调试,在VScode下进行。

cpld的编写,需要使用quartus和supra两个工具。目前cpld的调试,不支持在线工具,可以使用modelsim进行模块级测试。

VScode下的烧录,烧录两个bin,分别使用“Upload”和“Upload LOGIC”两个按钮。

 

 image.png

 


Supra下烧录cpld,则使用Supra的upload功能。

最后,用于生产时,都是要生成二合一的batch.bin的。用downloader.exe工具来烧录这个bin。

 

四、flash大小与两个bin的烧录位置

关于芯片flash大小:

AG32系列中,flash大小有两个型号:256K和1M.

flash起始地址从0x80000000开始。flash的可擦写块大小为4K(每次擦写的最小单位为4K,每块的擦写起始是4K对齐)。具体读、写、擦的函数,请参考example工程下的example_flash.c。

整片flash上需要存储基础的两个bin:code.bin和logic.bin(logic.bin就是cpld部分编译后的bin)。其他区域可供用户使用(存储用户信息)。

默认情况下,code.bin存储到0x80000000,logic.bin存储到最后100K。

也就是说,不管所选型号的flash是256K还是1M,最后100K都是留给fpga/cpld使用的。

如果使用的芯片是256K的flash,那么就是156K程序+100K的cpld.bin,即:用户程序不能超过156K。如果超过156K编译是可以通过的,但烧录后会冲掉logic部分。

logic被冲掉后,程序运行会表现出各种异常(通常是系统时钟初始化失败)。

如果程序code.bin的size比较大,cpld.bin又刚好比较小,可以调整这个界限的值。调整方法如下:

board_logic.compress = true //(可选)对cpld.bin部分进行压缩,更省空间。压缩后小于48K。通常程序可能小于30K。

board_upload.logic_address = 0x80034000 //存放cpld.bin的起始点。根据实际情况调整该边界值。

//flash的大小是在agrv2k_103.json 中定义的。

//flash起始地址是0x80000000,ram是0x20000000。

bin的存储与运行:

code.bin和cpld.bin都是存储在flash上的。

运行时,cpld.bin被加载到cpld内核区域运行(注意,这个区域不是芯片的128K的ram区)。code.bin则仍然在flash区域运行。

五、其他说明

在使用MCU时,如果不用CPLD部分,是不是CPLD就是多余的?

不是的。

整个芯片的开发,依赖于配置文件.ve。在这个配置文件里,需要用户配置需要使用到的时钟和全部引脚。这里边配置的引脚,就是生成到cpld.bin去的。

这里又引入另一个概念:mcu信号和引脚。这部分内容比较多,详情请参考 引脚配置 。这里只要知道,需要该cpld的参与,mcu的信号才能最终使能到引脚。

 

需要获取更多的“资料”和“支持”和“批量采购”可以联系我们

提供“芯片测样-发送资料-技术支持-批量采购”


联系方式: 姚工 13661545024(VX同号)

(加的时候备注下公司名和个人名字)

在线商城:agm-micro.taobao.com

公司网站:www.agm-micro.com

资料网站: www.tcx-micro.com

在线商城.png


关于我们

品牌中心

产品中心

新闻动态

咨询热线:13661545024(全国技术销售热线)

上海天晨芯科技有限公司

销售邮箱:sales@chipmorn.com

技术邮箱:jun.yao@chipmorn.com

公司地址:上海浦东新区东方路1365号5号楼

seo seo