随笔分类 - SmartARM3250
周立功SmartARM3250学习历程与总结
High Speed UARTs
摘要:
IO复用情况
LPC3250 的7个串口中的UART1/2/7是高速串口。其中的IO复用见 LPC3250串口IO复用情况。
高速串口不能使用
文档描述:
Enable the LPC32xx high speed serial ports in the kernel driver configuration and select
which high speed serial ports of the 3 you want to use in the Linux kernel configuration
System Type-- menu. Add the device nodes to the /dev are using the following command:
[root@nxp /root]# mknod /dev/ttyTX0 c 204 196
[r
阅读全文
IO复用情况
LPC3250 的7个串口中的UART1/2/7是高速串口。其中的IO复用见 LPC3250串口IO复用情况。
高速串口不能使用
文档描述:
Enable the LPC32xx high speed serial ports in the kernel driver configuration and select
which high speed serial ports of the 3 you want to use in the Linux kernel configuration
System Type-- menu. Add the device nodes to the /dev are using the following command:
[root@nxp /root]# mknod /dev/ttyTX0 c 204 196
[r
阅读全文
Standard UART's driver
摘要:
LPC3250 串口存在IO复用,详见 LPC3250串口IO复用情况。
UART1~7的UART3/4/5/6为普通串口。其中:
UART5——ttyS0为系统调试串口
目前还没有仔细配置IO复用,其余的串口驱动测试情况。
ttyS0——UART5,正常使用
ttyS1——UART3,能发能收
ttyS2——UART4,
ttyS3——UART6,
UART6是红外串口,默认情况下作为红外串口使用。如果要将红外串口作为普通串口使用,需要对其进行配置。
UART_CTRL寄存器的Bit5,0——使用红外模块进行调制和解调,1——旁路红外模块。
阅读全文
LPC3250 串口存在IO复用,详见 LPC3250串口IO复用情况。
UART1~7的UART3/4/5/6为普通串口。其中:
UART5——ttyS0为系统调试串口
目前还没有仔细配置IO复用,其余的串口驱动测试情况。
ttyS0——UART5,正常使用
ttyS1——UART3,能发能收
ttyS2——UART4,
ttyS3——UART6,
UART6是红外串口,默认情况下作为红外串口使用。如果要将红外串口作为普通串口使用,需要对其进行配置。
UART_CTRL寄存器的Bit5,0——使用红外模块进行调制和解调,1——旁路红外模块。
阅读全文
NAND FLASH Driver
摘要:
NAND FLASH写保护处理
硬件端口:GPO_14,低有效。GPO_14是单功能引脚,仅仅GPO功能。操作寄存器:P3_OUTP_SET[14]和P3_OUTP_CLR[14]。
代码:__raw_writel(OUTP_STATE_GPO(14), GPIO_P3_OUTP_SET(GPIO_IOBASE));
__raw_writel(OUTP_STATE_GPO(14), GPIO_P3_OUTP_CLR(GPIO_IOBASE));
阅读全文
NAND FLASH写保护处理
硬件端口:GPO_14,低有效。GPO_14是单功能引脚,仅仅GPO功能。操作寄存器:P3_OUTP_SET[14]和P3_OUTP_CLR[14]。
代码:__raw_writel(OUTP_STATE_GPO(14), GPIO_P3_OUTP_SET(GPIO_IOBASE));
__raw_writel(OUTP_STATE_GPO(14), GPIO_P3_OUTP_CLR(GPIO_IOBASE));
阅读全文
SD Card Driver
摘要:
MS_WP,SD_WP,SD卡写保护:GPI_09,驱动读取SD卡的写保护开关,进行不同操作;
MS_CD,SD_CD,插卡检测:GPI_04。(原理图的左边MS_CD和MS_WP写反了,以网络标号为准)
MS_PWR,SD_PWR,电源控制引脚,GPO_01,控制2SJ355。
驱动程序 写保护检测
GPI_09是单功能仅输入引脚,读取引脚状态,寄存器:P3_INP_STATE[9]。
代码:
103 u32 tmp;
104
105 tmp = __raw_readl(GPIO_P3_INP_STATE(GPIO_IOBASE)) & INP_STATE_GPI_09;
阅读全文
MS_WP,SD_WP,SD卡写保护:GPI_09,驱动读取SD卡的写保护开关,进行不同操作;
MS_CD,SD_CD,插卡检测:GPI_04。(原理图的左边MS_CD和MS_WP写反了,以网络标号为准)
MS_PWR,SD_PWR,电源控制引脚,GPO_01,控制2SJ355。
驱动程序 写保护检测
GPI_09是单功能仅输入引脚,读取引脚状态,寄存器:P3_INP_STATE[9]。
代码:
103 u32 tmp;
104
105 tmp = __raw_readl(GPIO_P3_INP_STATE(GPIO_IOBASE)) & INP_STATE_GPI_09;
阅读全文
LED TICK驱动
摘要:
硬件资源
LED2——GPO_06控制。
移植代码GPIO底层API
GPIO相关底层API在arch/arm/mach-lpc32xx/include/mach/lpc32xx_gpio.h文件中实现。
使用范例:
536 /* Set LED GPIO as an output */
537 __raw_writel(OUTP_STATE_GPO(1), GPIO_P2_DIR_SET(GPIO_IOBASE));
292 /* Enable the backlight */
293 #if defined (CONFIG_SMARTARM3250_QVGA_PANEL_V1_00)
294 __raw_writel(OUTP_STATE_GPO(4), GPIO_P3_OUTP_CLR(GPI
阅读全文
硬件资源
LED2——GPO_06控制。
移植代码GPIO底层API
GPIO相关底层API在arch/arm/mach-lpc32xx/include/mach/lpc32xx_gpio.h文件中实现。
使用范例:
536 /* Set LED GPIO as an output */
537 __raw_writel(OUTP_STATE_GPO(1), GPIO_P2_DIR_SET(GPIO_IOBASE));
292 /* Enable the backlight */
293 #if defined (CONFIG_SMARTARM3250_QVGA_PANEL_V1_00)
294 __raw_writel(OUTP_STATE_GPO(4), GPIO_P3_OUTP_CLR(GPI
阅读全文
LPC3250高分屏设置
摘要:
640x480,使用夏普的8寸液晶测试:
1024x768@48Hz,使用LG的17寸液晶测试:
群创WVGA屏
阅读全文
640x480,使用夏普的8寸液晶测试:
1024x768@48Hz,使用LG的17寸液晶测试:
群创WVGA屏
阅读全文
消除控制台的光标
摘要:
修改drivers/video/console/Makefile,去掉光标文件
29 #obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o bitblit.o font.o softcursor.o
30 obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o bitblit.o font.o
修改如下文件使用了soft_cursor的地方:
drivers/video/console/bitblit.c
drivers/video/console/fbcon_cw.c
drivers/video/console/fbcon_ccw.c
drivers/video/console/fbcon_ud.c
阅读全文
修改drivers/video/console/Makefile,去掉光标文件
29 #obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o bitblit.o font.o softcursor.o
30 obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o bitblit.o font.o
修改如下文件使用了soft_cursor的地方:
drivers/video/console/bitblit.c
drivers/video/console/fbcon_cw.c
drivers/video/console/fbcon_ccw.c
drivers/video/console/fbcon_ud.c
阅读全文
NAND FLASH分区规划
摘要:
由于BOOTLOADRER、PARAMS以及内核、文件系统都在NAND FLASH上,因此分区就得进行统一规划。系统的NAND FLASH分区依赖于u-boot和Linux内核两方面的设置。
U-Boot中的NAND分区
文件:include/configs/开发板.h
这是Phy3250的参数,Phy3250采用32MB的NAND FLASH,扇区大小为16KB:
189 /* Phy3250's NAND FLASH, 32MB, 16K size(Block, Sector) */
190 //#define CFG_ENV_SIZE 0x4000 /* 1 block, 16K */
191 //#define CFG_ENV_OFFSET 0x168000 /* Block
阅读全文
由于BOOTLOADRER、PARAMS以及内核、文件系统都在NAND FLASH上,因此分区就得进行统一规划。系统的NAND FLASH分区依赖于u-boot和Linux内核两方面的设置。
U-Boot中的NAND分区
文件:include/configs/开发板.h
这是Phy3250的参数,Phy3250采用32MB的NAND FLASH,扇区大小为16KB:
189 /* Phy3250's NAND FLASH, 32MB, 16K size(Block, Sector) */
190 //#define CFG_ENV_SIZE 0x4000 /* 1 block, 16K */
191 //#define CFG_ENV_OFFSET 0x168000 /* Block
阅读全文
LPC3250中断控制器
摘要:
框图 LPC3250有3个中断控制器,分别是1个主中断控制器(MIC)和2个子中断控制器(SIC1、SIC2)。整个框图以及它们的关系如下图:
寄存器汇总 每个控制器都有自己的一组寄存器,如下表所列:
阅读全文
框图 LPC3250有3个中断控制器,分别是1个主中断控制器(MIC)和2个子中断控制器(SIC1、SIC2)。整个框图以及它们的关系如下图:
寄存器汇总 每个控制器都有自己的一组寄存器,如下表所列:
阅读全文
LPC3250 BSP Header Files' Position
摘要:
用户驱动一般都会有这样类似的文件包含:
#include
这就要求平台相关的头文件必须放在include/asm/arch/目录下,而LPC3250的平台相关头文件却放在arch/arm/mach-lpc32xx/include/mach/目录下,如下所示:
[chenxibing@localhost linux-2.6.27.8]$ ls arch/arm/mach-lpc32xx/include/mach/
board.h i2c.h lpc32xx_gpio.h lpc32xx_rtc.h lpc32xx_uart.h uncompress.h
clock.h io.h lpc32xx_hsuart.h lpc3
阅读全文
用户驱动一般都会有这样类似的文件包含:
#include
这就要求平台相关的头文件必须放在include/asm/arch/目录下,而LPC3250的平台相关头文件却放在arch/arm/mach-lpc32xx/include/mach/目录下,如下所示:
[chenxibing@localhost linux-2.6.27.8]$ ls arch/arm/mach-lpc32xx/include/mach/
board.h i2c.h lpc32xx_gpio.h lpc32xx_rtc.h lpc32xx_uart.h uncompress.h
clock.h io.h lpc32xx_hsuart.h lpc3
阅读全文
LPC3250 External Memory Controller
摘要:
其中,基地址是0x31080000的寄存器是EMC的寄存器,还没有定义,需要自己定义。
基地址是0x40004000的寄存器已经在lpc32xx_clkpwr.h中定义了,无需再次定义。
阅读全文
其中,基地址是0x31080000的寄存器是EMC的寄存器,还没有定义,需要自己定义。
基地址是0x40004000的寄存器已经在lpc32xx_clkpwr.h中定义了,无需再次定义。
阅读全文
LPC3250 Perpheral IO Mapping
摘要:
机器描述
在board-smartarm3250.c中实现:
MACHINE_START (LPC3XXX, "SmartARM3250 board with the LPC3250 Microcontroller")
/* Maintainer: Kevin Wells, NXP Semiconductors */
.phys_io = UART5_BASE,
.io_pg_offst = ((io_p2v (UART5_BASE))18) & 0xfffc,
.boot_params = 0x80000100,
.map_io = lpc32xx_map_io, //CPU IO映射入口
.init_irq = lpc32xx_in
阅读全文
机器描述
在board-smartarm3250.c中实现:
MACHINE_START (LPC3XXX, "SmartARM3250 board with the LPC3250 Microcontroller")
/* Maintainer: Kevin Wells, NXP Semiconductors */
.phys_io = UART5_BASE,
.io_pg_offst = ((io_p2v (UART5_BASE))18) & 0xfffc,
.boot_params = 0x80000100,
.map_io = lpc32xx_map_io, //CPU IO映射入口
.init_irq = lpc32xx_in
阅读全文
LPC3250 Perpheral Base Registers
摘要:
LPC3250 Perpheral Base Registers基地址定义:
LPC3250外设众多,无法将全部的寄存器做成一个头文件,或者列出全部的寄存器和地址。
移植代码将每个外围部件的基地址做成一个文件platform.h,然后为每个外设再编写单独的外设寄存器列表(偏移量),如lpc32xx_gpio.h等等。
platform.h文件内容如下:
/*
* asm-arm/arch-lpc32xx/platform.h
*
* Author: Kevin Wells
*
* Copyright (C) 2008 NXP Semiconductors
*
* This program is free software; you can redistribute it and/or modify
阅读全文
LPC3250 Perpheral Base Registers基地址定义:
LPC3250外设众多,无法将全部的寄存器做成一个头文件,或者列出全部的寄存器和地址。
移植代码将每个外围部件的基地址做成一个文件platform.h,然后为每个外设再编写单独的外设寄存器列表(偏移量),如lpc32xx_gpio.h等等。
platform.h文件内容如下:
/*
* asm-arm/arch-lpc32xx/platform.h
*
* Author: Kevin Wells
*
* Copyright (C) 2008 NXP Semiconductors
*
* This program is free software; you can redistribute it and/or modify
阅读全文
SmartARM3250 Linux kernel porting
摘要:
在内核增加SmartARM3250的独立代码
增加SmartARM3250的配置菜单
修改arch/arm/mach-lpc32xx/Kconfig文件,参考原有的菜单进行编写,增加SmartARM3250的配置选项菜单。
增加板级文件
(1)在arch/arm/mach-lpc32xx/目录下增加board-smartarm3250.c文件,在其中实现和开发板具体相关的一下信息,可以参考原有的板子。
(2)修改Makefile,增加board-smartarm3250.c文件的支持。
阅读全文
在内核增加SmartARM3250的独立代码
增加SmartARM3250的配置菜单
修改arch/arm/mach-lpc32xx/Kconfig文件,参考原有的菜单进行编写,增加SmartARM3250的配置选项菜单。
增加板级文件
(1)在arch/arm/mach-lpc32xx/目录下增加board-smartarm3250.c文件,在其中实现和开发板具体相关的一下信息,可以参考原有的板子。
(2)修改Makefile,增加board-smartarm3250.c文件的支持。
阅读全文
基本内核编译
摘要:
2009年1月份,第一个发布版本出现,采用2.6.27.8版本,使用arm-vfp-linux-gnu 4.3.2的编译器,主机环境为Fedora 9。能够编译通过,却无法正常启动,在解压内核后就停止了。
如下是串口终端的信息:
TFTP from server 192.168.7.110; our IP address is 192.168.7.236
Filename 'uImage'.
Load address: 0x80100000
Loading: #################################################################
################################################
done
阅读全文
2009年1月份,第一个发布版本出现,采用2.6.27.8版本,使用arm-vfp-linux-gnu 4.3.2的编译器,主机环境为Fedora 9。能够编译通过,却无法正常启动,在解压内核后就停止了。
如下是串口终端的信息:
TFTP from server 192.168.7.110; our IP address is 192.168.7.236
Filename 'uImage'.
Load address: 0x80100000
Loading: #################################################################
################################################
done
阅读全文
NOR FLASH的U-Boot
摘要:
由于NXP基于NAND的U-Boot使用了S1L的一些初始化工作,因此需要把S1L中的初始化工作放到U-Boot中。
修改u-boot.lds,将U-Bootd饿入口地址修改为NOR FLASH的物理地址0xE0000000.
24 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
25 OUTPUT_ARCH(arm)
26 ENTRY(_start)
27 SECTIONS
28 {
29 . = 0xE0000000; #修改为NOR FLASH的物理地址
30
31 . = ALIGN(4);
32 .text :
33 {
34 cpu/arm92
阅读全文
由于NXP基于NAND的U-Boot使用了S1L的一些初始化工作,因此需要把S1L中的初始化工作放到U-Boot中。
修改u-boot.lds,将U-Bootd饿入口地址修改为NOR FLASH的物理地址0xE0000000.
24 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
25 OUTPUT_ARCH(arm)
26 ENTRY(_start)
27 SECTIONS
28 {
29 . = 0xE0000000; #修改为NOR FLASH的物理地址
30
31 . = ALIGN(4);
32 .text :
33 {
34 cpu/arm92
阅读全文
U-Boot for LPC3250
摘要:
烧写全新U-Boot后,默认参数很少,需要根据自己的实际环境进行设置和更改。
包括ip、服务器的IP、网关、文件名,甚至连bootcmd也需要自行配置。如下是配置好的参数:
U-Boot 1.3.3 (Feb 3 2009 - 10:03:29)
DRAM: 64 MB
NAND: 32 MiB
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
uboot printenv
bootdelay=3
baudrate=115200
ethaddr=DE:AD:BE:EF:00:01
netmask=255.255.255.0
gatewayip=192.168.1.1
bootfile
阅读全文
烧写全新U-Boot后,默认参数很少,需要根据自己的实际环境进行设置和更改。
包括ip、服务器的IP、网关、文件名,甚至连bootcmd也需要自行配置。如下是配置好的参数:
U-Boot 1.3.3 (Feb 3 2009 - 10:03:29)
DRAM: 64 MB
NAND: 32 MiB
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
uboot printenv
bootdelay=3
baudrate=115200
ethaddr=DE:AD:BE:EF:00:01
netmask=255.255.255.0
gatewayip=192.168.1.1
bootfile
阅读全文
Stage 1 Loader
摘要:
SmartARM3250help menu
help sys Displays help and syntax for a specific command
core S1L core system command group
image S1L image processing command group
nand NAND command group
mmu MMU command group
hw Hardware command group
阅读全文
SmartARM3250help menu
help sys Displays help and syntax for a specific command
core S1L core system command group
image S1L image processing command group
nand NAND command group
mmu MMU command group
hw Hardware command group
阅读全文
LPC3250的IO复用情况
摘要:
LPC3250号称有7个串口,实际上串口和其它功能模块存在IO复用情况,使用全部串口的时候有些其它功能是使用不了的。
7个串口:UART1/2/3/4/5/6/7
分成两类:UART1/2/7称为高速串口,UART3/4/5/6则是普通串口。
UART1(高速串口):
U1_TX
U1_RX/GPI_15/CAP1.0
UART2(高速串口):
U2_HCTS/GPI_16/U3_CTS
U2_RX/U3_DSR
U2_TX/U3_DTR
U2_HRTS/GPO_23/U3_RTS
阅读全文
LPC3250号称有7个串口,实际上串口和其它功能模块存在IO复用情况,使用全部串口的时候有些其它功能是使用不了的。
7个串口:UART1/2/3/4/5/6/7
分成两类:UART1/2/7称为高速串口,UART3/4/5/6则是普通串口。
UART1(高速串口):
U1_TX
U1_RX/GPI_15/CAP1.0
UART2(高速串口):
U2_HCTS/GPI_16/U3_CTS
U2_RX/U3_DSR
U2_TX/U3_DTR
U2_HRTS/GPO_23/U3_RTS
阅读全文
交叉编译工具链
摘要:
armvfp-4.3.2
有两种形式的工具链 tc-nxp-lnx-armvfp-4.3.2-1.src.rpm 和 tc-nxp-lnx-armvfp-4.3.2-1.src.rpm。
tc-nxp-lnx-armvfp-4.3.2-1.rpm
直接使用rpm -ivh命令安装即可。
tc-nxp-lnx-armvfp-4.3.2-1.src.rpm
查看所包含的内容:
[chenxibing@localhost lpc3250]$ rpm -qpl tc-nxp-lnx-armvfp-4.3.2-1.src.rpm
armtool.spec
tc-nxp-lnx-armvfp-4.3.2.tar.bz2
普通用户安装,出错:
[chenxibing
阅读全文
armvfp-4.3.2
有两种形式的工具链 tc-nxp-lnx-armvfp-4.3.2-1.src.rpm 和 tc-nxp-lnx-armvfp-4.3.2-1.src.rpm。
tc-nxp-lnx-armvfp-4.3.2-1.rpm
直接使用rpm -ivh命令安装即可。
tc-nxp-lnx-armvfp-4.3.2-1.src.rpm
查看所包含的内容:
[chenxibing@localhost lpc3250]$ rpm -qpl tc-nxp-lnx-armvfp-4.3.2-1.src.rpm
armtool.spec
tc-nxp-lnx-armvfp-4.3.2.tar.bz2
普通用户安装,出错:
[chenxibing
阅读全文

浙公网安备 33010602011771号