Skip to main content

小核调试说明

小核开发相对比较简单,君正提供很多例程demo在libmcu/example/,可以放在vendor/vendor.c的vendor_init()中运行即可。

1

本文以在x2600小核中将PB12作为pwm功能的使用方法为例,展示小核驱动调试方法。小核的其他功能调试请参考此使用方法。

小核开发的相关文档

初步配置大小核和小核串口,搭建环境实现最简单的大小核通讯和调试:doc\FAE文档\小核使用和开发\大小核通信说明.pdf

针对小核划分专门的大核内存预留段实现大小核内存独立安全运行(小核运行不稳定时优先检查这里):doc\FAE文档\小核使用和开发\划分小核配置内存的方法.pdf

x2600linux系统下对所有内存预留段的说明文档(包括小核内存预留):doc\开发使用说明\预留内存使用说明文档\x2600\Linux预留内存管理.pdf

特别注意:

1,不管是大核还是小核,同一个gpio不可以用作不同的功能。比如本文中,想要使用PB12作为PWM0功能,那么在软件上就要确保不能在大核或者小核中加载与之功能复用的屏显示驱动和NEMC驱动。

2,大核和小核是独立的核,都可以控制cpu上的所有功能模块。但是要确保一个功能模块在一个核上使用的话,另一个核是一定不能再初始化这个功能模块的。

本文的补充说明

1,本文默认客户已经对小核配置、内存划分、串口分配、编译、调试有一定的了解。没有这些了解的客户可以先看下上述三个文档。

2,本文默认客户已经对小核的运行内存进行了正确的预留。如果没有预留或者预留内存地址和小核运行地址不匹配,小核也能运行起来,但是可能长时间运行或者负载较重时会出现一些大小核程序都不稳定的奇奇怪怪的问题,此时优先根据 doc\FAE文档\小核使用和开发\划分小核配置内存的方法.pdf 和 doc\开发使用说明\预留内存使用说明文档\x2600\Linux预留内存管理.pdf 检查当前代码配置的小核内存划分和设置是否正确。

一 确认cpu中对所需引脚的功能定义

根据doc\芯片手册\X2600_PM.pdf 中对PB12的定义可知,PB12的pwm0功能是与NEMC的地址第0位和屏的数据线d8复用的。要想在小核中使用PB12作为PWM0使用,那么就要确保在大核和小核都不能加载使用到d8引脚的屏驱动和NEMC驱动(目前x2600大核上没有NEMC驱动,只有小核上有NEMC驱动),同时大核中不能加载PWM0驱动。

2

二 配置大核的pwm驱动

在配置大核之前,先打开大核对应的配置文件,需要确认的是大核配置框架文件Config.in和当前大核具体配置文件Config,不要选错了。具体可以参考文档:doc\FAE文档\小核使用和开发\大小核通信说明.pdf

3

要确保大核模块驱动中没有勾选pwm的驱动:

4

为避免屏驱动d8引脚复用,本文在大核中不加载任何屏驱动:

5

三 配置大核以加载小核的驱动和命令

小核是运行在大核内存中的,在大核运行起来之后进行加载才能运行小核代码。所以大核中需要加载小核的驱动和运行命令。

6

7

8

配置完成后,点击左上角的File---》save来保存当前打开的配置文件中。

9

四 配置小核pwm驱动

在配置小核之前,先打开小核对应的配置文件,需要确认的是小核配置框架文件Config.in和当前小核具体配置文件Config,不要选错了。具体可以参考:doc\FAE文档\小核使用和开发\大小核通信说明.pdf

10

确保小核中没有加载屏驱动:

11

确保小核中没有加载NEMC驱动:

12

配置小核pwm驱动:

13

配置完成后,点击左上角的File---》save来保存当前打开的配置文件。

14

五 添加小核测试文件代码

在vendor/vendor.c的vendor_init()中添加pwm的demo程序代码:

15

其中libmcu/example/pwm_example.c的代码实现如下:

16

六 编译

大核编译:

xy@vb:~/job/linux/testcode/build$ make x2600e_nand_5.10_defconfig xy@vb:~/job/linux/testcode/build$ make

小核编译:

xy@vb:~/job/linux/testcode/libmcu$ export PATH=../tools/toolchains/riscv-r1.0.0/bin/:$PATH 
xy@vb:~/job/linux/testcode/libmcu$ make x2600_test_defconfig xy@vb:~/job/linux/testcode/libmcu$ make

小核编译详情可以参考:doc\FAE文档\小核使用和开发\大小核通信说明.pdf

七 测试

adb push到板端usrdata分区:

adb push libmcu/libmcu-bare.bin /usr/data/

在板端串口终端执行加载小核指令:

cmd_mcu write_firmware /usr/data/libmcu-bare.bin 
cmd_mcu bootup

加载和启动小核的详情可以参考:doc\FAE文档\小核使用和开发\大小核通信说明.pdf

用示波器监测PB12的波形可见,每隔500ms开关一次pwm。在打开的阶段pwm的输出频率是12kHz,与demo实现相符。

17

18