小编kow*_*233的帖子

在编译期间将数据写入特定地址

我希望标题足够描述.所以这就是我想要做的和我玩弄的东西.

等等,首先,这是一个嵌入式应用程序.Atmel SAM4L微控制器,使用Atmel Studio IDE和GCC编译器/链接器.

是的,我正在编写一个引导加载程序,但是想将引导加载程序版本保存到程序存储器中,直到引导加载程序的已分配空间的末尾(假设为0x3FF0).这样,应用程序还可以通过查看特定地址来检查引导加载程序版本.此时我正忙着为应用程序更新引导加载程序本身的实用程序,但我不希望应用程序或引导加载程序使用命令或代码更新0x3FF0的版本,我希望它作为一部分. bin/.hex文件,所以当我启动引导加载程序时,版本会随之闪烁.所以目前我有一个#define用于bootloader类型,主要版本和次要版本,它们都在项目中的globals.h文件中.基本上我只想在编译时将这3个字节写入0x3FF0.

据我所知,我可以通过链接器获取相当多的技巧,但直到昨天才使用链接器脚本,并且能够用它做一些事情,但不是我想要的.该项目还创建了一个非常强大的链接器脚本,所以我也有点警惕在哪里跳转并转储我的三个字节.我知道你不能把地址指针移回去.

这是项目生成的链接描述文件

/**
 * \file
 *
 * \brief Flash Linker script for SAM.
 *
 * Copyright (c) 2013 Atmel Corporation. All rights reserved.
 *
 * \asf_license_start
 *
 * \page License
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and …
Run Code Online (Sandbox Code Playgroud)

c embedded microcontroller linker gcc

10
推荐指数
1
解决办法
1680
查看次数

标签 统计

c ×1

embedded ×1

gcc ×1

linker ×1

microcontroller ×1