Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
C语言
汇编
在汇编代码中嵌入任意二进制文件作为数据使用
发布于 2022-12-29 22:13:27 浏览:727
订阅该版
[tocm] #### 前言 * 有时候调试代码需要测试某种格式的文件,比如mp3等,常用的有两种办法。 1. 将mp3文件存放到fat等文件系统中,然后使用文件系统API进行读取。 2. 将mp3文件通过一些工具转换成二进制数组,放到代码中进行编译,通过代码直接进行引用。 下面再介绍另外一种方法 * 直接嵌入二进制文件进行编译,此方法比较适合小文件调试时使用,或者平台的硬件资源特别丰富(`内存、flash超大`)。 #### 具体操作 1. 汇编级引用 * 新建一个**.s的汇编文件,如下 ``` /* 下面的宏定义功能是转成字符串 如 TO_STRING(badboys) >>> "badboys" */ #define TO_STRING_A(s) # s #define TO_STRING(s) TO_STRING_A(s) .globl __test_code_start .globl __test_code_end /* 汇编 .section .rodata_test_code, "a", %progbits的含义 a表示权限,a是 allocation的缩写,表示该节区可分配; %progbits是type字段的标记: PROGBITS: 程序内容,包含代码、数据、调试相关信息 */ .section .rodata_test_code, "a", %progbits .balign 4 /* test_image是具体的二进制文件名称 */ __test_code_start: .incbin TO_STRING(test_image) __test_code_end: ``` 2. c语言级别引用 ``` #if 32位系统 extern uint32_t __test_code_start[]; extern uint32_t __test_code_end[]; #else extern uint64_t __test_code_start[]; extern uint64_t __test_code_end[]; #endif /* 验证是否包含成功 __test_code_start 是文件的起始地址,在C语言中直接使用指针方式就可以引用。 __test_code_end 是是文件的结束地址 */ printf("start addr=0x%x end addr=0x%x \r\n", __test_code_start, __test_code_end); ```
6
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
小鳄鱼
rt-thread脑残粉
文章
8
回答
45
被采纳
7
关注TA
发私信
相关文章
1
RT-Thread内存和字符串相关函数与C语言自带的内存和字符串相关函数冲突问题
2
嵌入式RT-thread中初始化线程函数中(void *)entry的意义何在
3
cJSON parse 失败,请问怎么解决?
4
请教一个C语言顺序表的问题,不知道有没有大佬帮吗解答
5
小白请教,关于头文件引用,、、哪些场景需要引用它们?
6
使用中断有warn。。。。。。。。。。。
7
局部变量位置被编译器改写
8
RTthread 两个例程结合在一起会出现incompatible type for argument 2 of 'led_matrix_set_color'
9
有没有在单片机编程使用goto语句的?
10
请问如何读取另一个c文件中的温湿度数据啊
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
ART-Pi
FinSH
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
cubemx
PWM
flash
packages_软件包
freemodbus
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
keil_MDK
SFUD
rt_mq_消息队列_msg_queue
C++_cpp
at_device
ulog
本月问答贡献
出出啊
1516
个答案
342
次被采纳
小小李sunny
1440
个答案
289
次被采纳
张世争
793
个答案
171
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
1
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
4
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部