04 2012 档案
SmartARM3250 CF卡使用说明
摘要:
如果SmartARM3250的CF卡不能使用,请参考下面的步骤来解决。
(1)检查内核版本是否已经支持CF卡,请查看有无drivers/ide/arm/smartarm3250-ide.c以及drivers/ide/arm/smartarm3250-ide.h文件,如果没有,请点击下载新版内核:
SmartARM3250内核V1.05 http://u.115.com/file/f7fe72fc73
其中/file/后面的为文件提取码,如果遇到已经过期的错误提示,请联系技术支持,发邮件到技术支持邮箱。
(2)检查配置文件,主要看ATA、IDE、IDEDISK、VFAT等有没有被选中,如果没有,请选中,当然,为了简便,可以下载附件的配置文件。
文件: smartarm3250_defconfig.zip
大小: 8KB
下载: 下载
覆
阅读全文
如果SmartARM3250的CF卡不能使用,请参考下面的步骤来解决。
(1)检查内核版本是否已经支持CF卡,请查看有无drivers/ide/arm/smartarm3250-ide.c以及drivers/ide/arm/smartarm3250-ide.h文件,如果没有,请点击下载新版内核:
SmartARM3250内核V1.05 http://u.115.com/file/f7fe72fc73
其中/file/后面的为文件提取码,如果遇到已经过期的错误提示,请联系技术支持,发邮件到技术支持邮箱。
(2)检查配置文件,主要看ATA、IDE、IDEDISK、VFAT等有没有被选中,如果没有,请选中,当然,为了简便,可以下载附件的配置文件。
文件: smartarm3250_defconfig.zip
大小: 8KB
下载: 下载
覆
阅读全文
SmartARM3250用串口烧写U-Boot无法启动解决办法
摘要:
有时候用tera term按烧写u-boot.bin后,也正确设置了S1L的启动参数,可是还是无法启动U-Boot,通常是在传送u-boot.bin的时候,没有在tera term中选择binary选项。
下面以烧写支持ubifs的u-boot.bin为例,对整个过程进行描述。
(1)先用光盘自带软件烧写kickstart和s1l。
(2)进入s1l,一次输入命令:
erase 2 10 1 //擦除2~11这10块U-Boot空间,
如果是完全重新烧写,可输入erase 2 2046 1 //擦除除kickstart和s1l之外的全部NAND
阅读全文
有时候用tera term按烧写u-boot.bin后,也正确设置了S1L的启动参数,可是还是无法启动U-Boot,通常是在传送u-boot.bin的时候,没有在tera term中选择binary选项。
下面以烧写支持ubifs的u-boot.bin为例,对整个过程进行描述。
(1)先用光盘自带软件烧写kickstart和s1l。
(2)进入s1l,一次输入命令:
erase 2 10 1 //擦除2~11这10块U-Boot空间,
如果是完全重新烧写,可输入erase 2 2046 1 //擦除除kickstart和s1l之外的全部NAND
阅读全文
SmartARM3250用户文件系统烧写办法
摘要:
烧写内核和安全文件系统后,在U-Boot下,输入run safemode可进入安全系统,在安全系统下,烧写用户文件系统。
烧写用户文件系统实际上就是将文件系统压缩包rootfs.tar或者rootfs.tar.bz2释放到NAND FLASH分区。
大致流程如下:
(1)将NAND FLASH用户文件系统分区MTD4 mount到系统某个目录下,如/mnt目录:
(2)将存放rootfs.tar或者rootfs.tar.bz2文件系统档案包的介质(如U盘、SD卡、CF卡或者NFS服务器)挂在到系统另外一个目录,如/tmp目录。
(3)将/tmp目录下的rootfs档案包释放到MTD挂在目录/mnt,等待释放完毕,
(4)卸载/mnt和/tmp目录,重启系统即可进入用户系统。
下面分别介绍:
阅读全文
烧写内核和安全文件系统后,在U-Boot下,输入run safemode可进入安全系统,在安全系统下,烧写用户文件系统。
烧写用户文件系统实际上就是将文件系统压缩包rootfs.tar或者rootfs.tar.bz2释放到NAND FLASH分区。
大致流程如下:
(1)将NAND FLASH用户文件系统分区MTD4 mount到系统某个目录下,如/mnt目录:
(2)将存放rootfs.tar或者rootfs.tar.bz2文件系统档案包的介质(如U盘、SD卡、CF卡或者NFS服务器)挂在到系统另外一个目录,如/tmp目录。
(3)将/tmp目录下的rootfs档案包释放到MTD挂在目录/mnt,等待释放完毕,
(4)卸载/mnt和/tmp目录,重启系统即可进入用户系统。
下面分别介绍:
阅读全文
目标板UBI工具交叉编译
摘要:
在目标板上使用ubifs,需要一些UBI工具,可从mtd-utils工具中得到。
在以前的文章中介绍过mtd-utils-1.2.0的交叉编译方式,但是这个版本的软件只能获得目标板的UBI工具,没有包含主机端得UBI工具。
mtd-1.3.0以上则包含了目标端和主机的UBI工具。主机上编译已经介绍过了,现在介绍交叉编译mtd-utils-1.4.2。
同样是在Fedora Core 9环境下编译。
当然,与交叉编译mtd-1.2.0一样,zlib、lzo都是不可缺少的,进行交叉编译,并安装到交叉工具链中,不再介绍。
交叉编译mtd-1.4.2还需要uuid,uuid包含在e2fsprogs软件包中,所以下载进行交叉编译。
------------------------------------------------------------------
阅读全文
在目标板上使用ubifs,需要一些UBI工具,可从mtd-utils工具中得到。
在以前的文章中介绍过mtd-utils-1.2.0的交叉编译方式,但是这个版本的软件只能获得目标板的UBI工具,没有包含主机端得UBI工具。
mtd-1.3.0以上则包含了目标端和主机的UBI工具。主机上编译已经介绍过了,现在介绍交叉编译mtd-utils-1.4.2。
同样是在Fedora Core 9环境下编译。
当然,与交叉编译mtd-1.2.0一样,zlib、lzo都是不可缺少的,进行交叉编译,并安装到交叉工具链中,不再介绍。
交叉编译mtd-1.4.2还需要uuid,uuid包含在e2fsprogs软件包中,所以下载进行交叉编译。
------------------------------------------------------------------
阅读全文
UBI镜像制作工具编译
摘要:
在主机上将已经部署好的根文件系统制作成ubi镜像,需要mkfs.ubifs和ubinize工具,可以交叉编译mtd-utils-1.3.0以上版本获得。目前最新版是1.4.2,喜欢尝鲜的朋友可以编译mtd-1.4.2.tar.bz2。
以下的过程在Fedora Core 9上进行,在其它发行版上可能现象不同。
编译mtd-utils 需要zlib和lzo的支持,所以都需要下载编译。
下载软件包:
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz
wget http://zlib.net/zlib-1.2.5.tar.gz
wget ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-1.4.2.tar.bz2
编译zl
阅读全文
在主机上将已经部署好的根文件系统制作成ubi镜像,需要mkfs.ubifs和ubinize工具,可以交叉编译mtd-utils-1.3.0以上版本获得。目前最新版是1.4.2,喜欢尝鲜的朋友可以编译mtd-1.4.2.tar.bz2。
以下的过程在Fedora Core 9上进行,在其它发行版上可能现象不同。
编译mtd-utils 需要zlib和lzo的支持,所以都需要下载编译。
下载软件包:
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz
wget http://zlib.net/zlib-1.2.5.tar.gz
wget ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-1.4.2.tar.bz2
编译zl
阅读全文
在Linux-2.6.31上使用ubifs
摘要:
前段时间移植了Linux-2.6.31到LPC3250上,但是在使用ubifs的时候遇到了一些问题。
原来在2.7.27.8上,ubifs没有任何问题就跑起来了,可是为何在这里却不行?摸索了大半天,终于搞定了,下面是过程。
主要现象是在linux-2.6.27上,ubi信息是:
Creating 1 MTD partitions on "nand0":
0x000000600000-0x000001600000 : "mtd=3"
device_name0:mtd=3
UBI: attaching mtd1 to ubi0
UBI: physical eraseblock size: 131072 bytes (128 KiB)
UBI: logical eraseblock size: 129024 bytes
UBI: smallest flash I/O u
阅读全文
前段时间移植了Linux-2.6.31到LPC3250上,但是在使用ubifs的时候遇到了一些问题。
原来在2.7.27.8上,ubifs没有任何问题就跑起来了,可是为何在这里却不行?摸索了大半天,终于搞定了,下面是过程。
主要现象是在linux-2.6.27上,ubi信息是:
Creating 1 MTD partitions on "nand0":
0x000000600000-0x000001600000 : "mtd=3"
device_name0:mtd=3
UBI: attaching mtd1 to ubi0
UBI: physical eraseblock size: 131072 bytes (128 KiB)
UBI: logical eraseblock size: 129024 bytes
UBI: smallest flash I/O u
阅读全文
内核启动参数之——内核无法启动
摘要:
为了调试文件系统,准备采用NFS 根文件系统方式启动,使用了下面的参数:
setenv bootargs root=/dev/nfs console=ttyS0,115200 nfsroot=192.168.1.138:/home/chenxibing/lpc3250/ecm1352/rootfs ip=192.168.1.136:192.168.1.1:192.168.1.1:255.255.255.0:zlg.z:eth0:off monitor=1
结果系统启动到打印内核解压后就停止了:
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
阅读全文
为了调试文件系统,准备采用NFS 根文件系统方式启动,使用了下面的参数:
setenv bootargs root=/dev/nfs console=ttyS0,115200 nfsroot=192.168.1.138:/home/chenxibing/lpc3250/ecm1352/rootfs ip=192.168.1.136:192.168.1.1:192.168.1.1:255.255.255.0:zlg.z:eth0:off monitor=1
结果系统启动到打印内核解压后就停止了:
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
阅读全文
SmartARM3250新旧液晶问题
摘要:
SmartARM50新旧液晶问题
由于SmartARM50经历过一次液晶更换,早期的液晶模块是TFT-6862,后来的液晶模块是TFT-4238,两个液晶模块的时序差别较大,甚至时钟极性都不同。
linux-2.6.27.8-smartarm3250_V1.05.tar.bz2的内核对旧液晶没有处理好,导致液晶屏点不亮,现在进行了修正。
请点击下面的链接,下载修正之后的内核,内核已经将液晶屏选择加入了Kconfig菜单,请根据自己的屏选择配置。在根目录下有config-6862和config-4238两个配置文件,分别与两块液晶屏对应。
http://u.115.com/file/f7e5307c2a
新液晶是TFT-4238-T,内核更新增加了这个液晶的支持:
http://u.115.com/file/clw4c6k5
最后
阅读全文
SmartARM50新旧液晶问题
由于SmartARM50经历过一次液晶更换,早期的液晶模块是TFT-6862,后来的液晶模块是TFT-4238,两个液晶模块的时序差别较大,甚至时钟极性都不同。
linux-2.6.27.8-smartarm3250_V1.05.tar.bz2的内核对旧液晶没有处理好,导致液晶屏点不亮,现在进行了修正。
请点击下面的链接,下载修正之后的内核,内核已经将液晶屏选择加入了Kconfig菜单,请根据自己的屏选择配置。在根目录下有config-6862和config-4238两个配置文件,分别与两块液晶屏对应。
http://u.115.com/file/f7e5307c2a
新液晶是TFT-4238-T,内核更新增加了这个液晶的支持:
http://u.115.com/file/clw4c6k5
最后
阅读全文
reboot的底层实现
摘要:
如果没有实现底层reboot支持,输入reboot命令不能重启系统,或者会引起系统出错。
需要实现体系结构的arch_reset(char mode)函数。
文件:arch/arm/mach-lpc32xx/include/mach/system.h
阅读全文
如果没有实现底层reboot支持,输入reboot命令不能重启系统,或者会引起系统出错。
需要实现体系结构的arch_reset(char mode)函数。
文件:arch/arm/mach-lpc32xx/include/mach/system.h
阅读全文
SmartARM3250升级为UBIFS
摘要:
(1)升级系统
SmartARM3250采用了双系统架构,早期版本的safefs采用CRAMFS,不能跳过NAND FLASH坏块,一旦在safefs区域有坏块,safefs就无法起来,导致系统无法操作。
解决方案已经出台,采用ubifs文件系统进行升级,涉及U-Boot和内核的升级。请点击下面的链接下载:/file/后面为文件提取码。
http://u.115.com/file/f71bc1e10
里面有文档说明。
如果链接提示已经过期,请联系技术支持。
(2)rootfs固化改进
原来的rootfs采用rootfs.tar.bz2,可能会在解压过程中遇到一些莫名其妙的错误而不能将rootfs进行固化。解决方案:
阅读全文
(1)升级系统
SmartARM3250采用了双系统架构,早期版本的safefs采用CRAMFS,不能跳过NAND FLASH坏块,一旦在safefs区域有坏块,safefs就无法起来,导致系统无法操作。
解决方案已经出台,采用ubifs文件系统进行升级,涉及U-Boot和内核的升级。请点击下面的链接下载:/file/后面为文件提取码。
http://u.115.com/file/f71bc1e10
里面有文档说明。
如果链接提示已经过期,请联系技术支持。
(2)rootfs固化改进
原来的rootfs采用rootfs.tar.bz2,可能会在解压过程中遇到一些莫名其妙的错误而不能将rootfs进行固化。解决方案:
阅读全文
串口问题解决办法
摘要:
SmartARM3250串口问题解决办法。
串口在使用中可能会出现发送或者接收的一些不正常问题,请使用附件的两个文件分别替换内核:
drivers/serial/8250.c
arch/arm/mach-lpc32xx/serial-lpc32xx.c
两个文件后重新编译内核皆可。
请下载附件。
阅读全文
SmartARM3250串口问题解决办法。
串口在使用中可能会出现发送或者接收的一些不正常问题,请使用附件的两个文件分别替换内核:
drivers/serial/8250.c
arch/arm/mach-lpc32xx/serial-lpc32xx.c
两个文件后重新编译内核皆可。
请下载附件。
阅读全文
UDA1380声卡CTRL+C OOPS问题
摘要:
是因为sound/soc/lpc3xxx/lpc3xxx-pcm.c文件的
lpc3xxx_pcm_hw_free函数的
lpc32xx_dma_ch_put(prtd-dmach);调用引起的,原因是
arch/arm/mach-lpc32xx/dma-lpc32xx.c文件的
lpc32xx_dma_ch_put函数使用了spin_lock_irq,修改为如下
85 static inline void __dma_regs_lock(void)
86 {
87 atomic_spin_lock_irq(&dma_lock);
88 }
89
90 static inline void __dma_regs_unlock(void)
91 {
92 atomic_spin_unlock_irq(&d
阅读全文
是因为sound/soc/lpc3xxx/lpc3xxx-pcm.c文件的
lpc3xxx_pcm_hw_free函数的
lpc32xx_dma_ch_put(prtd-dmach);调用引起的,原因是
arch/arm/mach-lpc32xx/dma-lpc32xx.c文件的
lpc32xx_dma_ch_put函数使用了spin_lock_irq,修改为如下
85 static inline void __dma_regs_lock(void)
86 {
87 atomic_spin_lock_irq(&dma_lock);
88 }
89
90 static inline void __dma_regs_unlock(void)
91 {
92 atomic_spin_unlock_irq(&d
阅读全文
end_request: I/O error
摘要:
end_request: I/O error
在移植NAND FLASH驱动,很有可能遇到end_request: I/O error mtblock1这样的问题。如果已经能够识别NAND FLASH坏块并且已经识别MTD分区,那么很有可能是FLASH坏块驱动的ECC设置问题。
解决办法:可以将NAND FLASH 的ECC设置为NAND_ECC_NONE。
阅读全文
end_request: I/O error
在移植NAND FLASH驱动,很有可能遇到end_request: I/O error mtblock1这样的问题。如果已经能够识别NAND FLASH坏块并且已经识别MTD分区,那么很有可能是FLASH坏块驱动的ECC设置问题。
解决办法:可以将NAND FLASH 的ECC设置为NAND_ECC_NONE。
阅读全文
lpc3250 TFT-4238液晶支持
摘要:
TFT-4238液晶和原来的TFT-6862差别较大。
这个屏的时钟和信号极性为低电平,需要修改LCD_POL寄存器(0x3104 0008)的bit14为1.
【arch/arm/mach-lpc32xx/clocks-lpc32xx.c】
1623 tmp &= ~(0xF800001F);
1624 tmp &= ~CLCDC_LCDTIMING2_BCD;
1625 tmp |= (div & 0x1F);
1626 tmp |= (((div 5) & 0x1F) 27);
1627 tmp |= (114);//POL low ABING for TFT-4238
1628 __raw_writel(tmp, CLCD_POL(io_p2v(LC
阅读全文
TFT-4238液晶和原来的TFT-6862差别较大。
这个屏的时钟和信号极性为低电平,需要修改LCD_POL寄存器(0x3104 0008)的bit14为1.
【arch/arm/mach-lpc32xx/clocks-lpc32xx.c】
1623 tmp &= ~(0xF800001F);
1624 tmp &= ~CLCDC_LCDTIMING2_BCD;
1625 tmp |= (div & 0x1F);
1626 tmp |= (((div 5) & 0x1F) 27);
1627 tmp |= (114);//POL low ABING for TFT-4238
1628 __raw_writel(tmp, CLCD_POL(io_p2v(LC
阅读全文
I2C1和DS2460驱动
摘要:
I2C1 和 DS2460驱动
Linux 2.6.27在i2c上没有2.6.29上成熟,不能按照那一套来做,譬如在board-smartarm.c中增加:
499 //static struct i2c_board_info __initdata smartarm3250_i2c_ds2460_info [] = {
500 // {
501 // I2C_BOARD_INFO("epc-ds2460", 0x40),
502 // },
503 //};
698 /* I2C based DS2460 on I2C1 */
699 // i2c_register_board_info(0, smartarm3250_i2c_ds2460_info,
700 // ARRAY_SIZE(smartarm3250_i
阅读全文
I2C1 和 DS2460驱动
Linux 2.6.27在i2c上没有2.6.29上成熟,不能按照那一套来做,譬如在board-smartarm.c中增加:
499 //static struct i2c_board_info __initdata smartarm3250_i2c_ds2460_info [] = {
500 // {
501 // I2C_BOARD_INFO("epc-ds2460", 0x40),
502 // },
503 //};
698 /* I2C based DS2460 on I2C1 */
699 // i2c_register_board_info(0, smartarm3250_i2c_ds2460_info,
700 // ARRAY_SIZE(smartarm3250_i
阅读全文
在u-boot中实现UART3驱动
摘要:
/*
* Copyright (C) 2010 ZLGMCU
* All rights reserved.
*
* @Author: Chenxibing
* @Descr: LPC3250 UART5 & UART3 driver for AnyWhere.
*/
#include
#include
DECLARE_GLOBAL_DATA_PTR;
初始化,波特率9600,8N1。
int uart3_init(void)
{
int tmp32;
CLKPWR-clkpwr_uart_clk_ctrl |= CLKPWR_UARTCLKCTRL_UART3_EN;
CLKPWR-clkpwr_uart3_clk_ctrl = (2540)|(38); //9
阅读全文
/*
* Copyright (C) 2010 ZLGMCU
* All rights reserved.
*
* @Author: Chenxibing
* @Descr: LPC3250 UART5 & UART3 driver for AnyWhere.
*/
#include
#include
DECLARE_GLOBAL_DATA_PTR;
初始化,波特率9600,8N1。
int uart3_init(void)
{
int tmp32;
CLKPWR-clkpwr_uart_clk_ctrl |= CLKPWR_UARTCLKCTRL_UART3_EN;
CLKPWR-clkpwr_uart3_clk_ctrl = (2540)|(38); //9
阅读全文
LCD背光控制 PWM_OUT1
摘要:
PWM_OUT1
PWM2_CTRL 0x4005 c000
目前只让该引脚输出高电平
PWM1_CTRL[31] = 0,则电平由 PWM1_CTRL[30] 来决定。
所以直接写入0x40000000即可输出高电平。
__raw_writel(130, io_p2v(0x4005C000)); //PWM_OUT1 pin=1
阅读全文
PWM_OUT1
PWM2_CTRL 0x4005 c000
目前只让该引脚输出高电平
PWM1_CTRL[31] = 0,则电平由 PWM1_CTRL[30] 来决定。
所以直接写入0x40000000即可输出高电平。
__raw_writel(130, io_p2v(0x4005C000)); //PWM_OUT1 pin=1
阅读全文
GPO_00使用
摘要:
LPC3250的GPO_00,还可以作为TST_CLK1的输出,由TEST_CLK(0x4000 40A4)寄存器的Bit 4 控制。
将TEST_CLK寄存器 bit4 设置为0,PIO_OUTP[00]--GPO_00
然后控制GPIO_P3_OUTP_CLR等寄存器,就可以控制GPO_00输出高低电平了。
阅读全文
LPC3250的GPO_00,还可以作为TST_CLK1的输出,由TEST_CLK(0x4000 40A4)寄存器的Bit 4 控制。
将TEST_CLK寄存器 bit4 设置为0,PIO_OUTP[00]--GPO_00
然后控制GPIO_P3_OUTP_CLR等寄存器,就可以控制GPO_00输出高低电平了。
阅读全文
不插网线终端缓慢的问题解决办法
摘要:
使用SmartARM3250 V1.00版源码,会出现不插入网线,终端会很缓慢的BUG,可以修改drivers/net/lpc32xx_mii.c文件的下面两个函数解决,将两个函数中的变量的lps的值改为5即可:
阅读全文
使用SmartARM3250 V1.00版源码,会出现不插入网线,终端会很缓慢的BUG,可以修改drivers/net/lpc32xx_mii.c文件的下面两个函数解决,将两个函数中的变量的lps的值改为5即可:
阅读全文
在内核顶层Makefile中增加软链接
摘要:
由于最新内核头文件位置的改变,一些原有的驱动所包含的头文件会找不到,为了肢解使用旧有的驱动而不做太大改动,可以增加一个软连接:
cd ../include/asm-arm/
ln -sf ../../arch/arm/mach-lpc32xx/include/mach/ arch
将arch/arm/mach-lpc32xx/include/mach/链接为include/asm-arm/arch,即
include/asm-arm/arch--arch/arm/mach-lpc32xx/include/mach
这样,原有驱动中#include 就可以使用了。
阅读全文
由于最新内核头文件位置的改变,一些原有的驱动所包含的头文件会找不到,为了肢解使用旧有的驱动而不做太大改动,可以增加一个软连接:
cd ../include/asm-arm/
ln -sf ../../arch/arm/mach-lpc32xx/include/mach/ arch
将arch/arm/mach-lpc32xx/include/mach/链接为include/asm-arm/arch,即
include/asm-arm/arch--arch/arm/mach-lpc32xx/include/mach
这样,原有驱动中#include 就可以使用了。
阅读全文
在LPC3250上使用UBIFS文件系统
摘要:
文件: lzo-2.03.tar.gz
大小: 611KB
下载: 下载
文件: mtd-utils-1.2.0.tar.bz2
大小: 270KB
下载: 下载
文件: zlib-1.2.3.tar.gz
大小: 484KB
下载: 下载
在SmartARM3250上使用UBIFS内核配置
使用UBIFS,首先需要在内核中使能MTD_UBI和UBIFS:
在MTD中使能UBI:
Enable UBI
在FS中使能UBIFS:
UBIFS file system support
工具支持
使用UBI,需要UBI的一些工具,如ubiattach ubimkvol等,这些工具都包含在教新版的mtd-utils中,我下载了mtd-utils-1.2.0.tar.b
阅读全文
文件: lzo-2.03.tar.gz
大小: 611KB
下载: 下载
文件: mtd-utils-1.2.0.tar.bz2
大小: 270KB
下载: 下载
文件: zlib-1.2.3.tar.gz
大小: 484KB
下载: 下载
在SmartARM3250上使用UBIFS内核配置
使用UBIFS,首先需要在内核中使能MTD_UBI和UBIFS:
在MTD中使能UBI:
Enable UBI
在FS中使能UBIFS:
UBIFS file system support
工具支持
使用UBI,需要UBI的一些工具,如ubiattach ubimkvol等,这些工具都包含在教新版的mtd-utils中,我下载了mtd-utils-1.2.0.tar.b
阅读全文
LPC3250 ttyS1 发送问题解决办法
摘要:
LPC3250 ttyS1,在应用程序中使用了usleep或者使用了线程等待操作,发送数据会出现只能发送一次,后续帧无法发送的问题,必须在超级终端按回车或者通过串口软件发送一个字符后才能发出后来的帧,问题解决如下:
将8250.c的__stop_tx函数改为如下代码:
阅读全文
LPC3250 ttyS1,在应用程序中使用了usleep或者使用了线程等待操作,发送数据会出现只能发送一次,后续帧无法发送的问题,必须在超级终端按回车或者通过串口软件发送一个字符后才能发出后来的帧,问题解决如下:
将8250.c的__stop_tx函数改为如下代码:
阅读全文
使用静态设备节点的cdev字符驱动GPIO
摘要:
尽管在2.6的内核版本已经支持udev,可以很方便的使用,并且使用也很舒服。但是使用udev,在启动过程中扫描/sys/class目录并生成设备节点的时间稍微有点长,在一些系统中是无法忍受的,所以没办法只好放弃udev,回到静态设备节点的时代,以加快启动速度。
2.6内核中,引入了cdev概念,使用cdev的驱动与传统的2.4的字符驱动又不一样,下面给出一个使用cdev和静态设备节点的驱动范例。
阅读全文
尽管在2.6的内核版本已经支持udev,可以很方便的使用,并且使用也很舒服。但是使用udev,在启动过程中扫描/sys/class目录并生成设备节点的时间稍微有点长,在一些系统中是无法忍受的,所以没办法只好放弃udev,回到静态设备节点的时代,以加快启动速度。
2.6内核中,引入了cdev概念,使用cdev的驱动与传统的2.4的字符驱动又不一样,下面给出一个使用cdev和静态设备节点的驱动范例。
阅读全文
initramfs 使用
摘要:
使用initramfs可以实现内核和文件系统在一个映像文件中,不过会增大内核体积,同时占用较多内存。
(1)准备根文件系统
先准备好根文件系统,放到某个目录,不过为了方便和内核一起打包,可以放到内核源代码的usr/目录下,我的做法是在usr目录下建立了image目录,然后将可用的根文件系统的内容全部复制到image目录下:
[chenxibing@localhost linux-2.6.27.8-smartarm3250]$ ls usr/image
bin dev hello.c home lib mnt proc sbin tmp var
boot etc hello_static init Makefile opt root sys usr
另外千万注意,initramfs识别的第一个进程名称为init,因此
阅读全文
使用initramfs可以实现内核和文件系统在一个映像文件中,不过会增大内核体积,同时占用较多内存。
(1)准备根文件系统
先准备好根文件系统,放到某个目录,不过为了方便和内核一起打包,可以放到内核源代码的usr/目录下,我的做法是在usr目录下建立了image目录,然后将可用的根文件系统的内容全部复制到image目录下:
[chenxibing@localhost linux-2.6.27.8-smartarm3250]$ ls usr/image
bin dev hello.c home lib mnt proc sbin tmp var
boot etc hello_static init Makefile opt root sys usr
另外千万注意,initramfs识别的第一个进程名称为init,因此
阅读全文
ARM9低功耗
摘要:
在ARM9内核中,实现低功耗的方法之一可以通过MMU进行管理,在idle任务中增加如下代码即可:
.section __cache_asm
.global __mmuWaitForInterrupt ;/* 系统内核进入低功耗模式, */
;/* 等待 FIQ/IRQ 激活 */
.func __mmuWaitForInterrupt
__mmuWaitForInterrupt: ;/* ARM 进入节能状态,等待中断 */
mov r0, 0
MCR p15, 0, R0, c7, c0, 4
MOV PC, LR
.endfunc
阅读全文
在ARM9内核中,实现低功耗的方法之一可以通过MMU进行管理,在idle任务中增加如下代码即可:
.section __cache_asm
.global __mmuWaitForInterrupt ;/* 系统内核进入低功耗模式, */
;/* 等待 FIQ/IRQ 激活 */
.func __mmuWaitForInterrupt
__mmuWaitForInterrupt: ;/* ARM 进入节能状态,等待中断 */
mov r0, 0
MCR p15, 0, R0, c7, c0, 4
MOV PC, LR
.endfunc
阅读全文
内核运行之前访问IO
摘要:
如果要在内核运行之前访问CPU的某些IO端口,直接使用指针方式定义寄存器进行操作即可。例如,在解压内核的时候喂狗,通过操作IO进行,可以这样操作:
在arch/arm/boot/compressed/misc.c文件:
307 arch_decomp_setup();
308
309 makecrc();
310 *((volatile unsigned long *)0x40E00054) &= (~(328)); //ABING GPAF0_L
311 *((volatile unsigned long *)0x40E0001C) = (114); //ABING GPDR0
312 *((volatile unsigned long *)0x40E00024) = (114
阅读全文
如果要在内核运行之前访问CPU的某些IO端口,直接使用指针方式定义寄存器进行操作即可。例如,在解压内核的时候喂狗,通过操作IO进行,可以这样操作:
在arch/arm/boot/compressed/misc.c文件:
307 arch_decomp_setup();
308
309 makecrc();
310 *((volatile unsigned long *)0x40E00054) &= (~(328)); //ABING GPAF0_L
311 *((volatile unsigned long *)0x40E0001C) = (114); //ABING GPDR0
312 *((volatile unsigned long *)0x40E00024) = (114
阅读全文
Qte 编程
摘要:
Qte 2编程,生成工程可以使用progen,也可使用qmake。
设置环境变量
脚本放在/home/chenxibing/lpc3250/qtopia-x86/qtopia-free-2.2.0-x86目录下,内容如下:
1
2 echo Start Setting env-var
3 export QTDIR=$PWD/qt2
4 export QTEDIR=$QTDIR
5 export QPEDIR=$PWD/qtopia
6 export TMAKEDIR=$PWD/tmake
7 export QMAKESPEC=linux-g++
8 export TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++
9 export PATH=$QTDIR/bin:$QPEDIR/bin:$TM
阅读全文
Qte 2编程,生成工程可以使用progen,也可使用qmake。
设置环境变量
脚本放在/home/chenxibing/lpc3250/qtopia-x86/qtopia-free-2.2.0-x86目录下,内容如下:
1
2 echo Start Setting env-var
3 export QTDIR=$PWD/qt2
4 export QTEDIR=$QTDIR
5 export QPEDIR=$PWD/qtopia
6 export TMAKEDIR=$PWD/tmake
7 export QMAKESPEC=linux-g++
8 export TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++
9 export PATH=$QTDIR/bin:$QPEDIR/bin:$TM
阅读全文
Qtopia-2.2.0 控制台问题
摘要:
embededkonsole不正常
修改embeddedkonsole.pro文件,修改红色部分,增加所指定平台,或者干脆直接去掉平台指定。
contains(QMAKE_ARCH,x86)|contains(QMAKE_ARCH,generic)|contains(QMAKE_ARCH,ipaq)|contains(QMAKE_ARCH,sharp) {
LIBS+=-lutil
DEFINES+=HAVE_OPENPTY
}
src/server/main.cpp
#else // SINGLE_EXEC
#include
#include
#include
#include
void doCalibrate()
{
const c
阅读全文
embededkonsole不正常
修改embeddedkonsole.pro文件,修改红色部分,增加所指定平台,或者干脆直接去掉平台指定。
contains(QMAKE_ARCH,x86)|contains(QMAKE_ARCH,generic)|contains(QMAKE_ARCH,ipaq)|contains(QMAKE_ARCH,sharp) {
LIBS+=-lutil
DEFINES+=HAVE_OPENPTY
}
src/server/main.cpp
#else // SINGLE_EXEC
#include
#include
#include
#include
void doCalibrate()
{
const c
阅读全文
smartarm3250 performance
摘要:
以太网性能测试:
测试仪器:SmartBits 6000C
测试结果:20500包/秒,每包46字节,20500846=943000(94.3M),与标称的100M以太网接近,性能相当优秀,得益于LPC3250的AHB阵列。
U盘读写速度:
写:64MB/73.46s 约 871.22KB/S
读:64MB/77.88s 约 821.77KB/S
阅读全文
以太网性能测试:
测试仪器:SmartBits 6000C
测试结果:20500包/秒,每包46字节,20500846=943000(94.3M),与标称的100M以太网接近,性能相当优秀,得益于LPC3250的AHB阵列。
U盘读写速度:
写:64MB/73.46s 约 871.22KB/S
读:64MB/77.88s 约 821.77KB/S
阅读全文
Qtopia-2.2.0启动脚本
摘要:
在ARM上启动Qtopia-2.2.0:
使用USB鼠标的脚本:
#!/bin/sh
HOME=/root
QTDIR=/opt/Qtopia
QPEDIR=/opt/Qtopia
QWS_MOUSE_PROTO="USB:/dev/input/mice" #使用mice可以实现鼠标热插拔,但是触摸屏还会有响应
#QWS_MOUSE_PROTO="USB:/dev/input/mouse1" #鼠标不能实现热插拔,但是触摸屏会停止响应
QWS_KEYBOARD=""
QWS_SIZE="320x240"
LD_LIBRARY_PATH=/opt/Qtopia/lib
PATH=/opt/Qtopia/bin:$PATH
e
阅读全文
在ARM上启动Qtopia-2.2.0:
使用USB鼠标的脚本:
#!/bin/sh
HOME=/root
QTDIR=/opt/Qtopia
QPEDIR=/opt/Qtopia
QWS_MOUSE_PROTO="USB:/dev/input/mice" #使用mice可以实现鼠标热插拔,但是触摸屏还会有响应
#QWS_MOUSE_PROTO="USB:/dev/input/mouse1" #鼠标不能实现热插拔,但是触摸屏会停止响应
QWS_KEYBOARD=""
QWS_SIZE="320x240"
LD_LIBRARY_PATH=/opt/Qtopia/lib
PATH=/opt/Qtopia/bin:$PATH
e
阅读全文
固化文件系统
摘要:
固化jffs2
U-Boot$ tftp 80008000 safe.crmafs
U-boot$ nand erase clean 0x00600000 $(filesize)
U-Boot$ nand write.jffs2 0x80008000 0x00600000 $(filesize)
setenv bootargs root=/dev/mtdblock3 ro console=ttyS0,115200 mem=64M rootfstype=jffs2
使用cramfs作为备份文件系统:
[root@localhost zlg]# mkcramfs rootfs_safe safefs.cramfs
阅读全文
固化jffs2
U-Boot$ tftp 80008000 safe.crmafs
U-boot$ nand erase clean 0x00600000 $(filesize)
U-Boot$ nand write.jffs2 0x80008000 0x00600000 $(filesize)
setenv bootargs root=/dev/mtdblock3 ro console=ttyS0,115200 mem=64M rootfstype=jffs2
使用cramfs作为备份文件系统:
[root@localhost zlg]# mkcramfs rootfs_safe safefs.cramfs
阅读全文
LTIB使用
摘要:
编译Qtopia后还能保留源代码,使用命令:
[chenxibing@localhost ltib]$ ./ltib -p qtopia -m prep
编译某一个软件包:
./ltib -p sqlite -m scbuild
阅读全文
编译Qtopia后还能保留源代码,使用命令:
[chenxibing@localhost ltib]$ ./ltib -p qtopia -m prep
编译某一个软件包:
./ltib -p sqlite -m scbuild
阅读全文
Enable SSH Server
摘要:
在etc/rc.d/rcS文件中增加配置IP的命令:
ifconfig eth0 192.168.7.236
同时开启SSH服务:
/etc/rc.d/init.d/sshd start
第一次执行时间较长,因为会产生一些rsa文件。
更好的方法:
在/etc/rc.d/rc.conf文件的cfg_servers中增加sshd
all_services="mount-proc-sys mdev udev hostname devfsd depmod modules filesystems syslog network inetd portmap dropbear sshd boa smb dhcpd settime qtopia watchdog gtk2 pango"
all_services_r="pango gtk2 watchdog qtopia settime dh
阅读全文
在etc/rc.d/rcS文件中增加配置IP的命令:
ifconfig eth0 192.168.7.236
同时开启SSH服务:
/etc/rc.d/init.d/sshd start
第一次执行时间较长,因为会产生一些rsa文件。
更好的方法:
在/etc/rc.d/rc.conf文件的cfg_servers中增加sshd
all_services="mount-proc-sys mdev udev hostname devfsd depmod modules filesystems syslog network inetd portmap dropbear sshd boa smb dhcpd settime qtopia watchdog gtk2 pango"
all_services_r="pango gtk2 watchdog qtopia settime dh
阅读全文
Qtopia2 编译
摘要:
编译Qtopia的时候配置了使用鼠标的选项:
[*] Use usb mouse instead of touchscreen in qtopia by default
同时内核使能了USB HID等,已经插入了USB光学鼠标,在内核中已经看到了鼠标:
[root@nxp root]# ls /dev/input/by-id/usb-15ca_USB_Optical_Mouse-event-mouse -la
lrwxrwxrwx 1 root root 9 Jan 1 00:18 /dev/input/by-id/usb-15ca_USB_Optical_Mouse-event-mouse - ../event1
另外,使用cat命令读取/dev/input/event1,触动鼠标,能够看到有信息。
阅读全文
编译Qtopia的时候配置了使用鼠标的选项:
[*] Use usb mouse instead of touchscreen in qtopia by default
同时内核使能了USB HID等,已经插入了USB光学鼠标,在内核中已经看到了鼠标:
[root@nxp root]# ls /dev/input/by-id/usb-15ca_USB_Optical_Mouse-event-mouse -la
lrwxrwxrwx 1 root root 9 Jan 1 00:18 /dev/input/by-id/usb-15ca_USB_Optical_Mouse-event-mouse - ../event1
另外,使用cat命令读取/dev/input/event1,触动鼠标,能够看到有信息。
阅读全文
待机LCD黑屏问题
摘要:
关于LCD10分钟后自动灭的问题,可以通过很多方法使其不灭:
E.g. add below lines in qtopia file:
export QWS_HIDE_CURSOR="Yes"
if [ -c /dev/tty0 ]; then
echo -e -n '\033[?25l' /dev/tty0
echo -e -n '\033[9]' /dev/tty0
fi
if [ -c /dev/vc/0 ]; then
echo -e -n '\033[?25l' /dev/vc/0
echo -e -n '\033[9]' /dev/vc/0
fi
# remove pointercal if it is empty
但目前没有找到好的方法可以使其关闭后通过输入事件再打开。
阅读全文
关于LCD10分钟后自动灭的问题,可以通过很多方法使其不灭:
E.g. add below lines in qtopia file:
export QWS_HIDE_CURSOR="Yes"
if [ -c /dev/tty0 ]; then
echo -e -n '\033[?25l' /dev/tty0
echo -e -n '\033[9]' /dev/tty0
fi
if [ -c /dev/vc/0 ]; then
echo -e -n '\033[?25l' /dev/vc/0
echo -e -n '\033[9]' /dev/vc/0
fi
# remove pointercal if it is empty
但目前没有找到好的方法可以使其关闭后通过输入事件再打开。
阅读全文
TTY and Login
摘要:
选中boot up with a tty and login,并设置inittab参数为 ::respawn:-/sbin/getty -L console 115200,即可实现启动过程中出现登录界面。配置如下:
(nxp) target hostname
[*] boot up with a tty and login
(::respawn:-/sbin/getty -L console 115200) Enter your inittab
阅读全文
选中boot up with a tty and login,并设置inittab参数为 ::respawn:-/sbin/getty -L console 115200,即可实现启动过程中出现登录界面。配置如下:
(nxp) target hostname
[*] boot up with a tty and login
(::respawn:-/sbin/getty -L console 115200) Enter your inittab
阅读全文
SJA1000 CAN驱动
摘要:
硬件资源
片选,使用了nCS2,根据LPC3250的存储器MAP:
Four static memory banks, 16 MB each:
EMC_CS0 0xE000 0000 ~ 0xE0FF FFFF
EMC_CS1 0xE100 0000 ~ 0xE1FF FFFF
EMC_CS2 0xE200 0000 ~ 0xE2FF FFFF
EMC_CS3 0xE300 0000 ~ 0xE3FF FFFF
阅读全文
硬件资源
片选,使用了nCS2,根据LPC3250的存储器MAP:
Four static memory banks, 16 MB each:
EMC_CS0 0xE000 0000 ~ 0xE0FF FFFF
EMC_CS1 0xE100 0000 ~ 0xE1FF FFFF
EMC_CS2 0xE200 0000 ~ 0xE2FF FFFF
EMC_CS3 0xE300 0000 ~ 0xE3FF FFFF
阅读全文
Beep Driver
摘要:
蜂鸣器驱动,基于miscdevice子系统。
beepdrv.c
阅读全文
蜂鸣器驱动,基于miscdevice子系统。
beepdrv.c
阅读全文
I2S UDAl1380
摘要:
这是PHY3250的驱动,使用UDA1380芯片。
问题:不能播放mp3
已经在内核中配置了声卡:
CONFIG_SND_SOC=y
CONFIG_SND_LPC3XXX_SOC=y
CONFIG_SND_LPC3XXX_SOC_I2S=y
CONFIG_SND_LPC32XX_USEI2S1=y
CONFIG_SND_LPC3XXX_SOC_I2S_UDA1380=y
CONFIG_SND_SOC_UDA1380=y
在启动信息中也已经看到了声卡:
Advanced Linux Sound Architecture Driver Version 1.0.17.
ASoC version 0.13.2
UDA1380 Audio Codec 0.6asoc: UDA1380 lpc3xxx-i2s1 mapping ok
ALSA device l
阅读全文
这是PHY3250的驱动,使用UDA1380芯片。
问题:不能播放mp3
已经在内核中配置了声卡:
CONFIG_SND_SOC=y
CONFIG_SND_LPC3XXX_SOC=y
CONFIG_SND_LPC3XXX_SOC_I2S=y
CONFIG_SND_LPC32XX_USEI2S1=y
CONFIG_SND_LPC3XXX_SOC_I2S_UDA1380=y
CONFIG_SND_SOC_UDA1380=y
在启动信息中也已经看到了声卡:
Advanced Linux Sound Architecture Driver Version 1.0.17.
ASoC version 0.13.2
UDA1380 Audio Codec 0.6asoc: UDA1380 lpc3xxx-i2s1 mapping ok
ALSA device l
阅读全文
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
阅读全文
Qt中setPlainText()和setText()有什么区别?
摘要:
setPlainText()顾名思义,是设置纯文本的。
而setText()参数除了可以设置为纯文本之外,还可以设置为一些简单的html格式的字符串,当然这些字符串是修饰一个字符串的。具体查看Qt的帮助文件。
阅读全文
setPlainText()顾名思义,是设置纯文本的。
而setText()参数除了可以设置为纯文本之外,还可以设置为一些简单的html格式的字符串,当然这些字符串是修饰一个字符串的。具体查看Qt的帮助文件。
阅读全文

浙公网安备 33010602011771号