嵌入式基础知识

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入式基础知识相关的知识,希望对你有一定的参考价值。

================ 内存管理 ===============
1.从地地址到高地址依次为:代码区、数据区、堆区、栈区、命令行参数及环境变量区域

2.
局部变量:局部变量位于栈区

栈区特点: 1.栈区当中变量未初始化之前都为随机值
2.在变量作用域结束后,变量空间被操作系统收回

全局变量:全局变量位于数据区

数据区特点:
1.数据区中变量未初始化之前都是0
2.在程序结束后,变量空间被操作系统收回

静态变量:静态变量位于数据区
特点:
1.数据区中变量未初始化之前都是0
2.在静态变量作用域结束后,并不会被操作系统收回变量空间
3.静态变量也是有作用域的,虽然静态变量在作用域结束后没有被操作系统回收变 量空间但在作用域外扔无法操作该静态变量

常量:常量位于数据区

数据区分为:
1.文字常量区 存放字符串常量
2.未初始化的静态变量区 存放未初始化化的静态变量 .bss
3.已初始化的静态变量区 存放已经初始化的静态变量 .rodata


1.堆区:程序员通过malloc函数获得的一片区域

2.注意:程序通过malloc获得堆区空间后,在程序结束时必须要free掉堆区空间否则将导致内存泄漏
malloc
free

 

========================== Makefile ======================
1.GNU推出的一款软件

2.在project文件中,在命令行下输入make,操作系统会自动寻找当前目录的下的makefile,按照makefile规则去编译project下的相关文件


3.基本形式:
main:main.o fun1.o fun.o gcc main.o fun1.o fun.o -o main
main.o:main.c
gcc -c main.c -o main.o
fun1.o:fun1.c
gcc -c fun1.c -o fun1.o
fun.o:fun.c
gcc -c fun.c -o fun.o


4.makefile变量
OBJS = main.o add.o
OBJ = main
CC = gcc
使用变量用$(OBJS)
$(OBJS)
$(CC)

5.自动变量
[email protected] 目标文件的完整名称
$< 第一个依赖文件的名称
$^ 所有的不重复的目标依赖文件,以空格隔开
方式一:
CC=gcc
CFLAGS=-O2 -Wall
OBJ=main
OBJS=main.o fun1.o fun.o

$(OBJ):$(OBJS)
$(CC) $(OBJS) -o $(OBJ)
main:main.o fun1.o fun.o
gcc main.o fun1.o fun.o -o main
main.o:main.c
gcc -c main.c -o main.o
fun1.o:fun1.c
gcc -c fun1.c -o fun1.o
fun.o:fun.c
gcc -c fun.c -o fun.o

.PHONY:
clean:
rm *.o main


方式二:
CC=gcc
CFLAGS=-O2 -Wall
OBJ=main
OBJS=main.o fun1.o fun.o

$(OBJ):$(OBJS)
$(CC) $(OBJS) -o $(OBJ)
main.o:main.c
$(CC) -c $< -o [email protected]
fun1.o:fun1.c
$(CC) -c $< -o [email protected]
fun.o:fun.c
$(CC) -c $< -o [email protected]

.PHONY:
clean:
rm *.o main


方式三:
CC=gcc
CFLAGS=-O2 -Wall
OBJ=main
OBJS=main.o fun1.o fun.o

$(OBJ):$(OBJS)
$(CC) $(OBJS) -o $(OBJ)
%.o:%.c
$(CC) -c $^ -o [email protected]

 

以上是关于嵌入式基础知识的主要内容,如果未能解决你的问题,请参考以下文章

0基础学习嵌入式,C语言Linux基础技能必不可少!

嵌入式基础知识

零基础学习嵌入式需要注意哪些知识

嵌入式系统基础知识总结

嵌入式技术基础与实践-学习札记

嵌入式系统基础知识总结1