s5pv210_uartstdio移植

思考与实践并行 思考与实践并行     2022-08-07     248

关键词:

1、stdio : standard input output 标准输入输出

2、printf函数调用到的2个关键函数:

vsprintf : 格式化打印信息,最终得到纯字符串的打印信息等待输出

putc : 操控标准输出的硬件,将信息发送出去

3、移植步骤:

(1)解压printf.rar到uart_stdio目录,解压后会有include、lib两个目录,其中include放的是相关头文件,lib放的是printf、scanf相关的代码;

(2)修改uart_stdio目录下的makefile,将lib目录下的代码编译链接成lib.a,然后将lib.a编译进bin中;

 1 CC        = arm-linux-gcc
 2 LD         = arm-linux-ld
 3 OBJCOPY    = arm-linux-objcopy
 4 OBJDUMP    = arm-linux-objdump
 5 AR        = arm-linux-ar
 6 
 7 INCDIR    := $(shell pwd)
 8 # C预处理器的flag,flag就是编译器可选的选项
 9 CPPFLAGS    := -nostdlib -nostdinc -I$(INCDIR)/include
10 # C编译器的flag
11 CFLAGS        := -Wall -O2 -fno-builtin
12 
13 #导出这些变量到全局,其实就是给子文件夹下面的Makefile使用
14 export CC LD OBJCOPY OBJDUMP AR CPPFLAGS CFLAGS
15 
16 
17 objs := start.o led.o clock.o uart.o main.o
18 objs += lib/libc.a
19 
20 uart.bin: $(objs)
21     $(LD) -Tlink.lds -o uart.elf $^
22     $(OBJCOPY) -O binary uart.elf uart.bin
23     $(OBJDUMP) -D uart.elf > uart_elf.dis
24     gcc mkv210_image.c -o mkx210
25     ./mkx210 uart.bin 210.bin
26 
27 lib/libc.a:
28     cd lib;    make;    cd ..
29     
30 %.o : %.S
31     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $< -c
32 
33 %.o : %.c
34     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $< -c
35 
36 clean:
37     rm *.o *.elf *.bin *.dis mkx210 -f
38     cd lib; make clean; cd ..

(3)编写main函数进行测试

void puts(const char *p);
char *gets(char *p);
void uart_init(void);

void memset(char *p, int val, int length)
{
        int i;

        for(i=0; i<length; i++)
        {
                p[i]=val;
        }
}

int main(void)
{
        char buf[100] = {0};

        uart_init();

        puts("x210 Simple shell:\n");

        while(1)
        {
                puts("Please input your code:");

                memset(buf, 0, sizeof(buf));

                gets(buf);

                puts("Your input code is:");

                puts(buf);

                puts("\n");

        }

        return 0;
}

 

s5pv210_串行通信

1、universalasynchronousreciverandtransmitter通用异步收发器2、transmitter:由发送缓冲区和发送移位器构成。发送信息时,首先将信息编码(一般用ASCII码)成二进制流,然后将一帧数据(一般是8位)写入发送缓冲区,发送移位器会自动... 查看详情

gpio中断

主要功能:通过两个GPIO(S5PV210_GPJ2(7)和S5PV210_GPJ3(0))作为输出,来控制两个作为中断的GPIO(S5PV210_GPH1(4)和S5PV210_GPH1(2)) 查看详情

gpio中断

主要功能:通过两个GPIO(S5PV210_GPJ2(7)和S5PV210_GPJ3(0))作为输出,来控制两个作为中断的GPIO(S5PV210_GPH1(4)和S5PV210_GPH1(2)),从而触发两个LED灯( S5PV210_GPH0(6... 查看详情

s5pv210-uboot源码分析-第一阶段

uboot源码分析1-启动第一阶段1、starts.S是我们uboot源码的第一阶段:从u-boot.lds链接脚本中也可以看出start.S是我们整个程序的入口处,怎么看出的呢,因为在链接脚本中有个ENTRY(_start)声明了_start是程序的入口。所以_start符号所在的... 查看详情

14.s5pv210串行通信编程实战

1、整个程序流程分析(1)整个串口通信相关程序包含2部分:uart_init负责初始化串口,uart_putc负责发送一个字节2、串口控制器初始化关键步骤(1)初始化串口的Tx和Rx引脚所对应的GPIO(查原理图可知Rx和Rx分别对应GPA0_1和GPA0_0)(2)GPA0CO... 查看详情

9.s5pv210的时钟系统

1、时钟域:MSYS、DSYS、PSYS(1)因为S5PV210的时钟体系比较复杂,内部外设模块太多,因此把整个内部的时钟划分为3大块,叫做3个域。(2)MSYS:CPU(Cortex-A8内核)、DRAM控制器(DMC0和DMC1)、IRAM&IROM······... 查看详情

嵌入式专题:s5pv210-mpeg4编码

我想说不台的平台,如tiny210和x210。它们的头文件是有稍微区别的。我这个是x210下的代码。但都须要注意的是NV12T与NV12的问题,默认要求输入的图片是NV12T,经过调整之后,能够同意用NV12。即便如此。NV12格式的图片也不好拿... 查看详情

s5pv210开发系列八_yaffs的移植

S5PV210开发系列八Yaffs的移植象棋小子   1048272975Nand作为市面上最基本的非易失性闪存技术之中的一个,应用在各种固态大容量存储解决方式中。因为Nandflash自身的特点,Nand存储器往往须要一款专用的Nand文件系统进行... 查看详情

s5pv210-kernel-内核启动过程分析

1、1、内核启动过程分析前的准备1、拿到一个内核源码时,先目录下的无用文件删除2、建立SI工程3、makefile(1)makefile中不详细的去分析,几个关键的地方,makefile开始部分是kernel的版本号,这个版本号比较重要,因为在模块化驱... 查看详情

s5pv210|微处理器启动流程(代码片段)

S5PV210|微处理器启动流程目录S5PV210|微处理器启动流程S5PV210启动概述S5PV210的启动顺序iROM(BL0)的启动顺序V210启动流程图第一次启动失败时的iROM第二次启动顺序用于引导代码描述的标题信息数据编写校验和示例代码S5PV210启动概... 查看详情

s5pv210-arm裸机-lcd

LCD :LCD是一种液晶晶体显示器,他本身是不发光的,属于被动发光,而LED显示器,CRT显示器(老式的砖头电脑)是主动发光的。 LCD是被动发光的,自己本身不会发光,我们在液晶面板上给他一个白光,背光。之后在电信号的驱... 查看详情

s5pv210-arm裸机-异常中的中断实现过程

210中的异常中的中断实现过程: 首先异常分为很多种,异常中包含了中断异常,有一个东西叫做异常向量表,在异常向量表中有很多相应异常的的地址。异常向量表中的所有异常中断的地址是不会变化的。地址都是固定的,但... 查看详情

s5pv210-arm裸机-启动过程

SD卡启动开机后,现从Soc内部的iROM(ROM)的64KB的代码BL0执行,判断用户的OMpin管脚时拨到了哪里,选择什么为启动介质,如SD/MMC/USB等。如果拨到了SD卡为启动介质,则先从SD卡启动介质中,读取16KB,BL1(官方说是可变的,但代码中... 查看详情

s5pv210-uboot源码分析-uboot环境变量

9、1、uboot的环境变量1、环境变量的作用(1)在我们不改变uboot源代码的情况下,只需要改变环境变量的值就可以改变uboot运行时的数据和一些特性。比如说,通过修改bootdelay环境变量,就可以更改开机倒数的秒数。2、环境变量的... 查看详情

s5pv210-arm-裸机-i2c

I2C协议,是同步的,串行通信方式。有两个线,一根SCLOCK时钟线,一根SDA数据线,时钟是右SOC提供的,SOC和外设用I2C通信时,使用的是一个时钟,数据线是两者传输信息用的。一般在通信的过程中,分为主设备和从设备,如果主... 查看详情

s5pv210-uboot源码分析-uboot的硬件驱动部分

1、裸机中本身是没有驱动概念的。狭义上的驱动的概念是操作系统中用来具体操控硬件的那部分代码叫驱动。广义上讲,只要是操控硬件的都算是驱动。2、裸机程序中是直接操控硬件的,但是在操作系统中我们必须通过驱动操... 查看详情

x210串口配置与stdio移植

串口控制器初始化关键步骤  (1)初始化串口的Tx和Rx引脚所对应的GPIO(查原理图可知Rx和Rx分别对应GPA0_1和GPA0_0)  (2)GPA0CON(0xE0200000),bit[3:0]=0b0010 bit[7:4]=0b0010   (3)初始化这几个关键寄存器UCON0ULCON0UMCON0UFCON0UBRDIV0UDIVSLOT0... 查看详情

移植qt与tslib到x210开发板的体会

1、将QT移植到X210上,让X210开发板可以运行QT东西,需要几个东西。tslibQT源码编译后的lib库等(1)tslib移植:@1:下载tslib,官方上下就可以。@2:解压。比如解压到了/root/xin_210/下@3:选择固定的交叉编译工具连,内核,tslib,QT源码... 查看详情