计算机系统
aa图图aa
这个作者很懒,什么都没留下…
展开
-
基于GNU、arm v7、threadx的backtrace
根据栈帧FP进行backtrace,threadx会在任务调度前将sp指向申请的任务栈空间,任务栈空间可在链接脚本中指定。随便写个例子如下:void func0(){ int i = 6; i++;}void func1(){ *(uint32_t *)0x80000000 = 1; //访问一块不在mpu范围内的内存会发生Abort func0();}void func2(){ f...原创 2021-12-09 10:04:48 · 300 阅读 · 0 评论 -
newlib中malloc如何获取heap地址
newlib代码:caddr_t_sbrk (int incr){ extern char end asm ("end"); /* Defined by the linker. */ static char * heap_end; char * prev_heap_end; if (heap_end == NULL) heap_end = & end; prev_heap_end = heap_end; if (heap...原创 2021-07-15 10:19:14 · 422 阅读 · 0 评论 -
基于rockchip-px30平台arm v8架构下uboot启动分析
一:arch/arm/cpu/armv8/start.S蓝色标注的是实际执行的代码片段,红色为注释#include <asm-offsets.h>#include <config.h>#include <linux/linkage.h>#include <asm/macro.h>#include <as...原创 2020-03-06 14:59:40 · 1975 阅读 · 0 评论 -
链接过程详解
一:链接的基本概念链接(linking)是将各种代码和数据片段收集并组合成为一个单一文件的过程,这个文件可被加载(复制)到内存并执行。链接可以执行于编译时,也可以执行于加载时,甚至执行于运行时。在现代系统中,链接是由叫做链接器(linker)的程序自动执行的。为什么需要链接器呢?一切都是为了简单、为了方便!试想一下,一个巨大的工程有巨大的源文件,包含N多个模块,如果没有链接的存在,那么...原创 2019-12-09 17:02:59 · 5194 阅读 · 0 评论