![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LINUX学习
林路可
SKernel
展开
-
Linux学习之printf函数在x86和arm平台的实现
前导码最大长度进制关于遇到%和未遇到%的情况:转载 2020-08-22 22:01:05 · 621 阅读 · 0 评论 -
Linux学习之printf函数_自动确定可变参数
变参函数:#include <stdarg.h>va_list p; va_start(p,fmt ); va_arg( p, int); va_end( p ); 以上四个到底是由什么函数或者宏定义构成的?下面来揭晓typedef char * va_list;#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) &a...原创 2020-08-17 02:26:21 · 208 阅读 · 0 评论 -
Linux学习之printf函数_手动确定可变参数
printf在是一个标准库函数,功能是:打印(变量、字符串)等等。问题:能不能依据printf的原理,写一个简易的用于裸机程序调试的my_printf函数呢?好处:1)my_printf函数在单片机、嵌入式芯片裸机调试过程中非常方便。 2)my_printf函数可以帮你打印寄存器的值、变量的值、打印字符串等。printf的声明:int printf(const char *format, ...);format:固定参数... :可变参数(变参)printf中的格...原创 2020-08-17 01:10:53 · 275 阅读 · 0 评论 -
内存对齐与补齐
首先我们先看看下面的C语言的结构体:typedef struct MemAlign{int a;char b[3];int c;}MemAlign;以上这个结构体占用内存多少空间呢?也许你会说,这个简单,计算每个类型的大小,将它们相加就行了,以32为平台为例,int类型占4字节,char占用1字节,所以:4 + 3 + 4 = 11,那么这个结构体一共占用11字节空间。好吧,那么我们就用实践来证明是否正确,我们用sizeof运算符来求出这个结构体占用内存空间大小,si...转载 2020-08-16 23:02:18 · 166 阅读 · 0 评论 -
关于MobaXterm_Personal的使用(对于S3C2440开发板)
对于S3C2440开发板需要将波特率(Speed)设置为115200,流量控制(Flow contro)设置为None原创 2020-08-15 17:18:18 · 758 阅读 · 0 评论 -
LINUX学习之《S3C2440时钟体系相关寄存器编程》
编程提高运行时钟:使FCLK=400MHz、HCLK=100MHz、PCLK=50MHz1、CLKDIVN应谨慎设置,不得超过HCLK和PCLK的限制。2、如果HDIVN不是0,CPU总线模式必须从快速总线模式改变为异步总线模式使用以下指令(S3C2440不支持同步总线模式)。如果HDIVN不为0,CPU总线模式为快速总线模式,CPU将通过HCLK进行操作。这个特性可以用来改变一半以上的CPU频率而不影响HCLK和PCLK。代码如下:/* 设置MPLL, FCLK : HCLK :原创 2020-07-14 23:30:53 · 129 阅读 · 0 评论 -
LINUX学习之《S3C2440时钟体系》
S3C2440的时钟控制逻辑既可以外接晶振,然后通过内部电路产生时钟源;也可以直接使用外部提供的时钟源,它们通过引脚(OM[3:2])的设置来选择。如下图: 时钟源选择在启动下左图中右上角的OSC为晶振,EXTCLK为外部时钟源。即通过引脚(OM[3:2])的设置来选择S3C2440的时钟控制逻辑。 由上面右边的原理图可知,OM2、OM3接GND...原创 2020-07-13 21:37:42 · 238 阅读 · 0 评论 -
LINUX学习之《转换说明和转义序列》
有一道习题:在printf的格式化字符串中怎么表示一个%字符?我们留在后面解决关于转义字符:例如:/和其意思是将反斜杠/或百分号%后面的字符转变成为另外的意义。原创 2020-07-12 20:20:56 · 473 阅读 · 0 评论 -
LINUX学习之《解释型语言和编译型语言》
前景提要:C、C++、JAVA、Python等高级语言的优点:编程更容易、代码更紧凑、可读性更强、出错更容易修改; 可移植的、与平台无关的。计算机不能直接理解高级语言,只能理解和运行机器语言,所以要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的程序。将高级语言翻译成机器语言的方式有两种:编译和解释。关于编译:编译器对源代码或源文件编译的过程并不执行程序,而是把源代码全部翻译成机器指令(机器语言),再加上一些描述信息,生成一个新的文件,称为可执行文件。可执行文件可以被操作原创 2020-07-10 21:22:25 · 426 阅读 · 0 评论 -
LINUX学习之《关于内存》
首先一点:RAM(Random Access Memory)、ROM(Read Only Memory)、Flash Memory都是内存。但现在一般把内存代指RAM(Random Access Memory),全名为随机存取器。而RAM与Flash Memory 则有区别:1、数据RAM:电源关闭数据不保留。存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。Flash:电源关闭数据保留。结合原创 2020-07-10 17:46:17 · 172 阅读 · 0 评论