摘要:
如果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
下载: 下载
覆 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)
摘要:
有时候用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 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)
摘要:
烧写内核和安全文件系统后,在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目录,重启系统即可进入用户系统。
下面分别介绍: 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)
摘要:
在目标板上使用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软件包中,所以下载进行交叉编译。
------------------------------------------------------------------ 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)
摘要:
在主机上将已经部署好的根文件系统制作成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 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)
摘要:
前段时间移植了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 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)
摘要:
为了调试文件系统,准备采用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. 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)
摘要:
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
最后 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)
摘要:
如果没有实现底层reboot支持,输入reboot命令不能重启系统,或者会引起系统出错。
需要实现体系结构的arch_reset(char mode)函数。
文件:arch/arm/mach-lpc32xx/include/mach/system.h 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)
摘要:
(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进行固化。解决方案: 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)
摘要:
SmartARM3250串口问题解决办法。
串口在使用中可能会出现发送或者接收的一些不正常问题,请使用附件的两个文件分别替换内核:
drivers/serial/8250.c
arch/arm/mach-lpc32xx/serial-lpc32xx.c
两个文件后重新编译内核皆可。
请下载附件。 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)
摘要:
是因为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 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)
摘要:
end_request: I/O error
在移植NAND FLASH驱动,很有可能遇到end_request: I/O error mtblock1这样的问题。如果已经能够识别NAND FLASH坏块并且已经识别MTD分区,那么很有可能是FLASH坏块驱动的ECC设置问题。
解决办法:可以将NAND FLASH 的ECC设置为NAND_ECC_NONE。 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)
摘要:
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 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)
摘要:
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 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)
摘要:
/*
* 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 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)
摘要:
PWM_OUT1
PWM2_CTRL 0x4005 c000
目前只让该引脚输出高电平
PWM1_CTRL[31] = 0,则电平由 PWM1_CTRL[30] 来决定。
所以直接写入0x40000000即可输出高电平。
__raw_writel(130, io_p2v(0x4005C000)); //PWM_OUT1 pin=1 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)
摘要:
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输出高低电平了。 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)
摘要:
使用SmartARM3250 V1.00版源码,会出现不插入网线,终端会很缓慢的BUG,可以修改drivers/net/lpc32xx_mii.c文件的下面两个函数解决,将两个函数中的变量的lps的值改为5即可: 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)
摘要:
由于最新内核头文件位置的改变,一些原有的驱动所包含的头文件会找不到,为了肢解使用旧有的驱动而不做太大改动,可以增加一个软连接:
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 就可以使用了。 阅读全文
![](http://pic002.cnblogs.com/images/2012/389274/2012042720001942.jpg)