【海思HI3520之QT开发】-串口通讯实战(一):UART加载到内核
- 环境: Ubuntu 12.04-64bit
- 硬件平台: Hi3520D_V100
- 内核版本: linux-3.0.y
- Qt版本: qt4.8.6
- 编译器: arm-hisiv100nptl-linux-gcc
- 作者: MacianYuan
- 原文链接: https://www.ebaina.com/articles/140000004191
摘要:
1、 在Hi3520平台下,增加UART加载到内核
2、 修改内核文件,制作内核镜像。
3、 增加UART3方法
第一节 修改内核文件,增加UART加载到内核
一、内核配置初始化,拷贝固定内核配置替换现有的配置
//清内核
make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- clean
//进入内核根目录下
cd /home/vmuser/sdk/Hi3520D_SDK_V1.0.5.0/osdrv/kernel/linux-3.0.y/
//拷贝.config 文件
cp arch/arm/configs/hi3520d_full_defconfig .config
二、修改内核相关文件
//修改内核相关文件
cd /home/vmuser/sdk/Hi3520D_SDK_V1.0.5.0/osdrv/kernel/linux-3.0.y/arch/arm/mach-hi3520d
//编辑core.c 文件
vi core.c
(1)管脚复用配置:
(a)管脚复用宏定义
/* 复用寄存器基地址 */
/* 复用寄存器基地址 */
#define REG_UART_BASE_ADDR 0x200F0000
/* UART1_RXD偏移寄存器 */
#define REG_UART1RXD_OFFSET IO_ADDRESS(REG_UART_BASE_ADDR + 0x050)
/* UART1_TXD偏移寄存器 */
#define REG_UART1TXD_OFFSET IO_ADDRESS(REG_UART_BASE_ADDR + 0x058)
/* UART2_RXD偏移寄存器 */
#define REG_UART2RXD_OFFSET IO_ADDRESS(REG_UART_BASE_ADDR + 0x05C)
/* UART2_TXD偏移寄存器 */
#define REG_UART2TXD_OFFSET IO_ADDRESS(REG_UART_BASE_ADDR + 0x060)
/* UART端口复用配置 */
#define uart_reuse()({\
writel(0x01,REG_UART1RXD_OFFSET);\
writel(0x01,REG_UART1TXD_OFFSET);\
writel(0x01,REG_UART2RXD_OFFSET);\
writel(0x01,REG_UART2TXD_OFFSET);\
})
(b)《Hi3520D/Hi3515A/Hi3515C H.264 编解码处理器用户指南》(P70)
复用寄存器基地址:
UART 偏移地址:
(2)串口初始化配置
(a)增加uart1、uart2配置信息:
//修改core.c 文件 在第310行uart0配置信息下增加
HIL_AMBA_DEVICE(uart0, "uart:0", UART0, NULL);
HIL_AMBA_DEVICE(uart1, "uart:1", UART1, NULL);
HIL_AMBA_DEVICE(uart2, "uart:2", UART2, NULL);
static struct amba_device *amba_devs[] __initdata = {
&HIL_AMBADEV_NAME(uart0),
&HIL_AMBADEV_NAME(uart1),
&HIL_AMBADEV_NAME(uart2),
};
(b)修改串口amba_device 结构体,配置串口初始化:(AMBA:片上总线协议)
//修改core.c 文件 在第323行配置信息下增加
static struct clk_lookup lookups[3];
static void uart_clk_init(unsigned long clk)
{
uart_clk.rate = clk;
lookups[0].dev_id = "uart:0";
lookups[0].clk = &uart_clk;
lookups[1].dev_id = "uart:1";
lookups[1].clk = &uart_clk;
lookups[2].dev_id = "uart:2";
lookups[2].clk = &uart_clk;
uart_reuse();
}
(3)增加串口中断配置信息
(a)切换目录,增加irqs.h配置信息
cd /home/vmuser/sdk/Hi3520D_SDK_V1.0.5.0/osdrv/kernel/linux-3.0.y/arch/arm/mach-hi3520d/include/mach
//修改irqs.h 文件 第10行
#define UART0_IRQ (HI3520D_IRQ_START + 8)
#define UART1_IRQ (HI3520D_IRQ_START + 9)
#define UART2_IRQ (HI3520D_IRQ_START + 10)
第二节 配置内核文件,制作内核镜像
三、配置内核
(1)海思加载的串口驱动是PL011,make menuconfig 配置Device Drivers > Character devices > Serial drivers中的ARM AMBA PL011 serial port support 和 Support for console on AMBA serial port
//进入内核配置界面
make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- menuconfig
(2)修改后的结果
(3)重新编译内核烧入
//编译内核
make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- uImage
//拷贝编译好的内核到指定目录下
cp arch/arm/boot/uImage /mnt/
ping 192.168.100.128
setenv serverip 192.168.100.128
sa
(4)修改tftp服务器和客户端ip地址,通过tftp烧写内核镜像
(5)烧写内核
mw.b 82000000 ff 400000
tftp 82000000 uImage
sf probe 0
sf erase 100000 400000
sf write 82000000 100000 400000
reset # 重启进入新系统。
(6)烧写结果
四、验证串口并应用
在/dev 下可以查看是否有串口设备ttyAMA0~2。
第三节 增加UART3方法
由于之前没有增加UART3 ,后在项目中UART1 UART2 都被占用,贴出增加UART3方法。
UART3和上述UART1 UART2相同。主要是在《Hi3520D/Hi3515A/Hi3515C H.264编解码处理器用户指南.pdf》P98 手册中查找到复用引脚。
-
muxctrl_reg46 GPIO1_0 管脚复用控制寄存器
UART3_TXD 对应普通GPIO1_0 Offset Address 0x0B8 -
muxctrl_reg47 GPIO1_1 管脚复用控制寄存器
UART3_RXD 对应普通GPIO1_1 Offset Address 0x0BC
除此配置与UART1 UART2不同之外,其他都按照UART1 UART2添加即可。
- 分享
- 举报
-
浏览量:2635次2020-08-14 15:09:41
-
浏览量:4899次2020-08-15 17:29:07
-
浏览量:4954次2020-08-11 18:51:18
-
浏览量:6721次2020-08-15 17:22:26
-
浏览量:3949次2020-08-14 17:18:54
-
浏览量:10386次2021-01-12 20:00:35
-
浏览量:1548次2020-08-30 00:47:29
-
浏览量:10595次2020-08-30 00:41:53
-
浏览量:4600次2020-07-31 13:45:09
-
浏览量:1554次2020-08-30 00:47:44
-
浏览量:1501次2023-11-04 15:07:11
-
浏览量:2527次2020-08-23 21:47:22
-
2020-11-09 12:31:13
-
浏览量:4569次2020-07-27 16:34:42
-
浏览量:2590次2021-12-10 16:36:33
-
浏览量:1064次2024-01-05 10:33:11
-
浏览量:5389次2020-07-31 11:54:44
-
浏览量:4224次2020-08-30 12:27:19
-
浏览量:3768次2020-07-28 10:49:06
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
MacianYuan
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
用到了,
66666
666666666666666666666666666666