在我们开发过程中,有时候会有这样一个需求:希望能够指定某个函数或变量存放的地址。
也许你看过一些文章,里面介绍了一大堆内容,甚至于还会介绍分散加载文件的配置。但是绝大多数情况下,为了实现这么一个简单的功能,还要学太多东西,是不是一下就懵了?
那么,请继续往下看吧。这篇文章会教你一种非常简单的方法,一看就会。
只需要使用__attribute__((section(".ARM.__at_addre[......]
在我们开发过程中,有时候会有这样一个需求:希望能够指定某个函数或变量存放的地址。
也许你看过一些文章,里面介绍了一大堆内容,甚至于还会介绍分散加载文件的配置。但是绝大多数情况下,为了实现这么一个简单的功能,还要学太多东西,是不是一下就懵了?
那么,请继续往下看吧。这篇文章会教你一种非常简单的方法,一看就会。
只需要使用__attribute__((section(".ARM.__at_addre[......]
在学习C语言时,无数本教材都告诉我们:用const 类型 标志符; 这种方式是定义一个常量,也就意味着不可以修改。但真的只是这样吗?例如:
int main () {
const int var = 0x1;
var = 2;
printf("%d\n", var);
return 0;
}
你可能会说: var是不可修改的。从表面上看,似乎是这样,现在来编译一下[……]
我们知道,在RTOS中会提供若干延时函数的API。对于没有仔细了解过RTOS的同学而言,可能会产生这样疑惑:这些API与普通自写的延时函数相比究竟有何优势呢?为什么要额外提供这些API?
在这篇文章中,我们来分析下这些API接口的工作原理、特点以及其相比自写的延时函数,究竟有什么优缺点,我们该如何选择。
在没有使用RTOS之前,我们可能通过以下方式实现延时或定时。
在比较[……]
在我们使用uCOS/FreeRTOS编写代码时,首先要面临的一个问题是怎样创建任务并启动整个系统。一般来说,我们会有两种不同的方式。这两种方式不仅适用于uCOS/FreeRTOS,同时也适用于其它RTOS。
这两种方式各有优缺点。如果用一幅图来表示的话,见下方。
下面将分别说明这两种方式的具体应用方法。
这种方式是这[……]