1

我正在开发一个 128K RAM 的 SoC,目前 UART 打印太多,所以我们必须通过从内存中提取来减少代码大小。

我们有一个工作的 128Mb SPI 串行闪存,我想在上面存储字符串。请注意闪存或我们的固件中没有文件系统。

与其自己编写所有内容,我想知道是否有任何有用的代码或标准或其他我们可以使用的材料?

包括:(以下任何内容都可能会有所帮助)

  1. 库生成
  2. 资源获取方法实现。
  3. SPI FLASH 读/写。(其实我已经写过了。)

我期待这样的事情:

UART_PRINT(C315);

FLASH上有一个“C315”项,对应“Hello world”。

我们将其读出,然后在运行时通过 UART 打印。最终结果是终端上的“Hello world”。

当然,任何让我大吃一惊的东西都是受欢迎的。:)

4

2 回答 2

1

创建一个指向字符串的指针数组,并使用类似于资源的数组索引。该数组以及字符串可以存储在闪存中。将汇编程序用于指针和字符串数组可能更容易,可能作为与嵌入式代码的单独构建。您需要将 .h 包含文件中使用的索引名称与指向字符串的指针数组进行协调,类似于用于 Windows 应用程序的资源文件。这可以通过一堆定义或枚举来完成:

enum stringindexes{C000, C001, ...};

更新 - 我想知道是否可以使用诸如 Windows 资源编辑器之类的东西来创建指针和字符串。这需要一些逆向工程来创建一个实用程序,以将生成的资源文件转换为仅包含指针和字符串数组的二进制图像,但它会自动生成包含指针名称的包含文件。如果有的话,资源编辑器可以用作创建自定义程序的指南,以生成包含定义或枚举的包含文件,以索引到指向字符串的指针数组。

于 2015-04-28T04:15:00.630 回答
1

您也许可以利用链接器。

将 SPI FLASH 字符串放在自定义区域的自定义部分中。使用链接器生成的自定义区域内容对 SPI FLASH 进行编程。

使用字符串指针作为UART_PRINT(). 该函数应通过从字符串指针中减去自定义部分的基地址来将指针转换为偏移量。然后使用偏移量从 SPI FLASH 中检索字符串。

于 2015-04-29T21:41:24.217 回答