- 博客(11)
- 资源 (5)
- 收藏
- 关注
原创 Linux下应用程序运行时的内存空间分布详细分析
首先来看一个简单的程序,引入一些基本概念:#include <unistd.h>#include <stdio.h> int main(){ printf("%d\n", getpid()); while(1) { } return 0;}第6行:getpid()函数可以获得当前进程的PID号,然后将当前进程的PID号打印出来。第8行:通过while(1)这个死循环让程序一直运行而不退出。在Linux下有一个/proc/pid目录,
2021-04-24 13:30:47
1567
原创 以freetype为例来编写通用的Makefile文件
1、freetype的交叉编译交叉编译就是在一个平台上生成另一个平台上可以执行的代码。要进行交叉编译,需要在主机平台上安装对应的交叉编译工具链,然后使用这个交叉编译工具链对我们的源代码进行编译,最终生成在目标平台上可以允许的代码,最常见的交叉编译例子:在Linux PC上,使用arm-linux-gcc编译器编译出在Linux ARM平台上运行的代码。freetype库是一个完全开源、高质量且可移植的字体引擎,它提供统一的接口来访问多种字体文件,想要在Linux ARM平台上使用freetype库就
2021-04-21 18:44:22
558
原创 堆栈指针SP、时钟初始化、SDRAM初始化、重定位、SDRAM的测试
ARM中堆栈指针SP的设置计算机中的堆栈主要用来保存临时数据、局部变量和中断/调用子程序后的返回地址。程序中栈主要用来保存函数中的局部变量、寄存器参数,如果使用了操作系统,栈中还可能保存当前进线程的上下文。设置栈大小的一个原则是:保证栈不会溢出到数据空间或程序空间。所谓堆栈溢出,是指堆栈指针SP向下增长到其他段空间,堆栈溢出会修改其他段空间的值,严重情况下可能会造成死机。CPU在运行程序时,会...
2019-06-19 14:49:28
5184
原创 ARM嵌入式系统中UART(串口)的使用
1、UART的原理简介通用异步接收器和发送器(Universal Asynchronous Receiver And Transmitter),简称UART,用来传输串行数据。发送数据时,CPU将并行数据写入UART,UART按照一定格式在TxD线上串行发出;接收数据时,UART检测到RxD线上的信号,将串行数据收集放到缓冲区中,CPU即可读取UART获得这些数据。UART最精简的连线方式...
2019-06-19 11:00:05
570
原创 S3C2440中Nand flash的使用
Nand flash的使用1、Nand flash的硬件连接Nand flash芯片为K9F2G08U0A,大小为2048块=2048*64(128K)页=256MB=2Gb(1B=8bit),具体信息如下图所示:S3C2440内部集成了一个Nand flash控制器,在复位期间,Nand flash控制器首先通过与Nand flash相连的4个配置引脚的状态,获取外接的Nand f...
2019-06-18 22:17:59
745
原创 ARM嵌入式系统中的内存控制器和SDRAM
S3C2440是32位的,所以可以寻址4GB(2^32=4GB)的空间。前1GB的地址(0x0000 0000 ~ 0x4000 0000)为外设地址空间,还有一部分为CPU内部使用的特殊功能寄存器地址空间(0x4800 0000 ~ 0x5FFF FFFF),其余的地址空间没有使用。内存的概念内存是代码的执行空间,以PC机为例:程序以文件的形式保存在硬盘里面,程序在运行之前先由操作系统装入到...
2019-06-18 10:04:04
166
原创 arm-linux中相关编译器
ARM中Makefile工具中的交叉编译器、交叉链接工具*1、arm-linux-gcc:arm-linux-gcc是一个交叉编译器,一个C或者C++文件,要经过预处理(preprocessing)、编译(compilation)、汇编(assembly)、链接(linking)4个步骤才能生成可执行文件,以上4个步骤统称为:编译。arm-linux-gcc的常用选项:-v: 查看ar...
2019-06-17 22:41:47
728
算法分析与设计的相关程序设计
2019-05-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人