我用OLED数模转换工具创建了一个很大的数组,把它放到代码里凯尔无法构建。
请问有什么解决办法吗?我有外接一个1米的SPI闪光。
你好,
可预先将屏幕数据烧录到FLASH中。将该数组转化成六角格式的文件,通过SmartSnippets工具箱烧录到FLASH的指定区域。程序运行之后,将其读出再送给屏幕即可。
您好!
想问一下如何转化为十六进制文件呢?因为我是打算将固件直接烧录到FLASH去启动的,所以想问一下是否能修改凯尔的工程设置,使工程能够构建成功呢?
数组转化为十六进制可在网上搜索到一些小工具来完成。我介绍的这种方式,是比较容易上手的。
也有稍微复杂,但之后会比较方便引用的方式:
你也可通过修改凯尔的分散加载文件sct,指定一个区域用于保存数组数据,并在程序中将该数组指定链接到该区域。但是,程序里对该数组的访问,还是要通过读写外部FLASH的方式来进行,并且,你需要知道该数组实际对应的在FLASH中的位置。
以上方式需要你先了解内存分配,凯尔的链接文件配置等相关知识。
那若是将数组转化为十六进制烧录到flash里,而后我又要讲固件烧到flash里通过spi启动程序,是应该先从0 x20000000烧录固件再烧录闪光吗?
将数组起始地址分配到固件之后的位置,可通过十六进制合并工具,将两个十六进制文件合并为一个进行烧录
了解,我先进行尝试,如果还有问题再来咨询,谢谢您!
好的,有问题随时可跟帖讨论
我的程序好像无法读取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);
SPI外设只有一个。需要你软件上分时使用这两个硬件接口。
想问一下,是否能写1 mb大的程序烧入闪进行启动吗?还是说程序最大只能84 kb吗?
DA1458x系列芯片程序需要拷贝到ram中运行。
580具有50 kb的内存,所以一般采用代码(32 kb) +数据(12 kb)的组合方式。
585具有96 kb的ram,所以一般采用代码(64 kb) +数据(32 kb)的组合方式。
DA1468x系列芯片程序可通过QSPI接口,从FLASH运行,故代码量可不受内存大小的限制。
感谢回复。
那就是说如果我是580 + 1 mb flash,从flash启动的话,也只能用50 kb,剩下的只能用作数据存储是吗?
是的
你好,
可预先将屏幕数据烧录到FLASH中。将该数组转化成六角格式的文件,通过SmartSnippets工具箱烧录到FLASH的指定区域。程序运行之后,将其读出再送给屏幕即可。
您好!
想问一下如何转化为十六进制文件呢?因为我是打算将固件直接烧录到FLASH去启动的,所以想问一下是否能修改凯尔的工程设置,使工程能够构建成功呢?
你好,
数组转化为十六进制可在网上搜索到一些小工具来完成。我介绍的这种方式,是比较容易上手的。
也有稍微复杂,但之后会比较方便引用的方式:
你也可通过修改凯尔的分散加载文件sct,指定一个区域用于保存数组数据,并在程序中将该数组指定链接到该区域。但是,程序里对该数组的访问,还是要通过读写外部FLASH的方式来进行,并且,你需要知道该数组实际对应的在FLASH中的位置。
以上方式需要你先了解内存分配,凯尔的链接文件配置等相关知识。
您好!
那若是将数组转化为十六进制烧录到flash里,而后我又要讲固件烧到flash里通过spi启动程序,是应该先从0 x20000000烧录固件再烧录闪光吗?
你好,
将数组起始地址分配到固件之后的位置,可通过十六进制合并工具,将两个十六进制文件合并为一个进行烧录
您好!
了解,我先进行尝试,如果还有问题再来咨询,谢谢您!
好的,有问题随时可跟帖讨论
您好!
我的程序好像无法读取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);
你好,
SPI外设只有一个。需要你软件上分时使用这两个硬件接口。
您好!
想问一下,是否能写1 mb大的程序烧入闪进行启动吗?还是说程序最大只能84 kb吗?
你好,
DA1458x系列芯片程序需要拷贝到ram中运行。
580具有50 kb的内存,所以一般采用代码(32 kb) +数据(12 kb)的组合方式。
585具有96 kb的ram,所以一般采用代码(64 kb) +数据(32 kb)的组合方式。
DA1468x系列芯片程序可通过QSPI接口,从FLASH运行,故代码量可不受内存大小的限制。
您好!
感谢回复。
那就是说如果我是580 + 1 mb flash,从flash启动的话,也只能用50 kb,剩下的只能用作数据存储是吗?
是的