歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> S3C6410裸機UART驅動(將printf重定義到串口)

S3C6410裸機UART驅動(將printf重定義到串口)

日期:2017/3/1 9:59:21   编辑:Linux編程

要確保S3C6410已經初始化,一般是使用UBOOT初始化


//串口寄存器

//UART0

#defineULCON0 *((vu32*)0x7F005000) //UART通道0 行控制寄存器

#defineUCON0 *((vu32*)0x7F005004) //UART通道0 控制寄存器

#defineUFCON0 *((vu32*)0x7F005008) //UART通道0 FIFO 控制寄存器

#defineUMCON0 *((vu32*)0x7F00500C) //UART通道0 調制解調器(Modem)控制寄存器

#defineUTRSTAT0 *((vu32*)0x7F005010) //UART通道0 發送/接收狀態寄存器

#defineUERSTAT0 *((vu32*)0x7F005014) //UART通道0 接收錯誤狀態寄存器

#defineUFSTAT0 *((vu32*)0x7F005018) //UART通道0 FIFO 狀態寄存器

#defineUMSTAT0 *((vu32*)0x7F00501C) //UART通道0 調制解調器(Modem)狀態寄存器

#defineUTXH0 *((vu32*)0x7F005020) //UART通道0 發送緩沖寄存器

#defineURXH0 *((vu32*)0x7F005024) //UART通道0 接收緩沖寄存器

#defineUBRDIV0 *((vu32*)0x7F005028) //通道0波特率分頻寄存器

#defineUDIVSLOT0 *((vu32*)0x7F00502C) //UART通道0 分頻插槽寄存器

#defineUINTP0 *((vu32*)0x7F005030) //通道0中斷處理寄存器

#defineUINTSP0 *((vu32*)0x7F005034) //UART通道0 中斷源處理寄存器

#defineUINTM0 *((vu32*)0x7F005038) //UART通道0 中斷屏蔽寄存器





//作者:陳

//創建時間:20120220

//最後修改時間:20120220

//說明:S3C6410串口相關



#include"system.h"

#include"uart.h"

#include"s3c6410_map.h"





//////////////////////////////////////////////////////////////////

//加入以下代碼,支持printf函數,

#if 1



#include"stdio.h"

//標准庫需要的支持函數

struct __FILE

{

inthandle;

};

/* FILE is typedef’d in stdio.h. */

FILE __stdout;

//定義_sys_exit()以避免使用半主機模式

_sys_exit(int x)

{

x= x;

}

//重定義fputc函數

int fputc(int ch,FILE *f)

{

Uart0_SendByte((u8)ch);

returnch;

}

#endif




static const u16UART_SPEED[13][2] ={{1717,0x4924},{858,0x4924},{428,0x4924},{285,0x4924},{213,0x4924},{142,0x4924},{106,0x4924},{72,0x4924},{70,0x4924},{34,0x4924},{16,0x4924},{7,0x4924},{3,0x4924}};

Copyright © Linux教程網 All Rights Reserved