14个帖子/ 0个新
最后发表
daniel59
离线
最后看到:一年6个月前
加入:2016-01-08 04:34
数组过大无法编译

我用OLED数模转换工具创建了一个很大的数组,把它放到代码里凯尔无法构建。

请问有什么解决办法吗?我有外接一个1米的SPI闪光。

设备:
CYibin
离线
最后看到:7个月1周前
工作人员
加入:2017-12-14 02:48
你好,

你好,

可预先将屏幕数据烧录到FLASH中。将该数组转化成六角格式的文件,通过SmartSnippets工具箱烧录到FLASH的指定区域。程序运行之后,将其读出再送给屏幕即可。

daniel59
离线
最后看到:一年6个月前
加入:2016-01-08 04:34
您好!

您好!

想问一下如何转化为十六进制文件呢?因为我是打算将固件直接烧录到FLASH去启动的,所以想问一下是否能修改凯尔的工程设置,使工程能够构建成功呢?

CYibin
离线
最后看到:7个月1周前
工作人员
加入:2017-12-14 02:48
你好,

你好,

数组转化为十六进制可在网上搜索到一些小工具来完成。我介绍的这种方式,是比较容易上手的。

也有稍微复杂,但之后会比较方便引用的方式:

你也可通过修改凯尔的分散加载文件sct,指定一个区域用于保存数组数据,并在程序中将该数组指定链接到该区域。但是,程序里对该数组的访问,还是要通过读写外部FLASH的方式来进行,并且,你需要知道该数组实际对应的在FLASH中的位置。

以上方式需要你先了解内存分配,凯尔的链接文件配置等相关知识。

daniel59
离线
最后看到:一年6个月前
加入:2016-01-08 04:34
您好!

您好!

那若是将数组转化为十六进制烧录到flash里,而后我又要讲固件烧到flash里通过spi启动程序,是应该先从0 x20000000烧录固件再烧录闪光吗?

CYibin
离线
最后看到:7个月1周前
工作人员
加入:2017-12-14 02:48
你好,

你好,

将数组起始地址分配到固件之后的位置,可通过十六进制合并工具,将两个十六进制文件合并为一个进行烧录

daniel59
离线
最后看到:一年6个月前
加入:2016-01-08 04:34
您好!了解,我先进行尝试,如果还有问题再来咨询,谢谢您!

您好!

了解,我先进行尝试,如果还有问题再来咨询,谢谢您!

CYibin
离线
最后看到:7个月1周前
工作人员
加入:2017-12-14 02:48
好的,有问题随时可跟帖讨论

好的,有问题随时可跟帖讨论

daniel59
离线
最后看到:一年6个月前
加入:2016-01-08 04:34
您好!

您好!

我的程序好像无法读取FLASH……

我在想是否由于我板子上有一个SPI接口的加速度计芯片,而当时设计板子的时候又弄了2组SPI引脚,而导致FLASH无法读取吗?

引脚设定如下:
GPIO_ConfigurePin(ADXL_EN_GPIO_PORT, ADXL_EN_GPIO_PIN, OUTPUT, PID_SPI_EN, true);
GPIO_ConfigurePin(ADXL_CLK_GPIO_PORT, ADXL_CLK_GPIO_PIN, OUTPUT, PID_SPI_CLK, false);
GPIO_ConfigurePin(ADXL_DO_GPIO_PORT, ADXL_DO_GPIO_PIN, OUTPUT, PID_SPI_DO, false);
GPIO_ConfigurePin(ADXL_DI_GPIO_PORT, ADXL_DI_GPIO_PIN, INPUT, PID_SPI_DI, false);
GPIO_ConfigurePin(SPI_EN_GPIO_PORT, SPI_EN_GPIO_PIN, OUTPUT, PID_SPI_EN, true);
GPIO_ConfigurePin(SPI_CLK_GPIO_PORT, SPI_CLK_GPIO_PIN, OUTPUT, PID_SPI_CLK, false);
GPIO_ConfigurePin(SPI_DO_GPIO_PORT, SPI_DO_GPIO_PIN, OUTPUT, PID_SPI_DO, false);
GPIO_ConfigurePin(SPI_DI_GPIO_PORT, SPI_DI_GPIO_PIN, INPUT, PID_SPI_DI, false);

CYibin
离线
最后看到:7个月1周前
工作人员
加入:2017-12-14 02:48
你好,

你好,

SPI外设只有一个。需要你软件上分时使用这两个硬件接口。

daniel59
离线
最后看到:一年6个月前
加入:2016-01-08 04:34
您好!

您好!

想问一下,是否能写1 mb大的程序烧入闪进行启动吗?还是说程序最大只能84 kb吗?

CYibin
离线
最后看到:7个月1周前
工作人员
加入:2017-12-14 02:48
你好,

你好,

DA1458x系列芯片程序需要拷贝到ram中运行。

580具有50 kb的内存,所以一般采用代码(32 kb) +数据(12 kb)的组合方式。

585具有96 kb的ram,所以一般采用代码(64 kb) +数据(32 kb)的组合方式。

DA1468x系列芯片程序可通过QSPI接口,从FLASH运行,故代码量可不受内存大小的限制。

daniel59
离线
最后看到:一年6个月前
加入:2016-01-08 04:34
您好!

您好!

感谢回复。

那就是说如果我是580 + 1 mb flash,从flash启动的话,也只能用50 kb,剩下的只能用作数据存储是吗?

CYibin
离线
最后看到:7个月1周前
工作人员
加入:2017-12-14 02:48
是的

是的