s3c2440

U-BOOT1.2.0移植S3C2440成功

孤街醉人 提交于 2019-12-03 07:52:13
主要参考 http://blog.chinaunix.net/u1/34474/showart.php?id=397315 文章,tekkamna写的很详细,我就直接搬过来,记录如下:(本人在他的基础上修改了DM9000x的驱动,SDRAM的刷新参数,和网络控制芯片的基地址)交叉编译器用的是3.3.2版本。 首先,U-Boot1.2.0还没有支持s3c2440,这次移植是用2410的文件稍作修改而成的。其实2440和2410的区别主要是2440的主频更高,增加了摄像头接口和AC‘97音频接口;寄存器方面,除了新增模块的寄存器外, 移植所要注意的是NAND FlASH控制器的寄存器有较大的变化、芯片的时钟频率控制寄存器(芯片PLL的寄存器)有一定的变化。 其他寄存器 基本 是兼容的。 一、 在U-Boot中建立自己的开发板类型,并测试编译。 我为开发板取名叫: hongge2440 0 在工作目录下解压U-Boot。 $tar zxvf u-boot.git.tar.gz 1 进入U-Boot目录,修改Makefile $cd u-boot.git/ $vi Makefile #为hongge2440建立编译项 sbc2410x_config: unconfig @$(MKCONFIG) $(@:_config=) arm arm920t sbc2410x NULL s3c24x0

U-boot在S3C2440上的移植详解(四)---支持DM9000EP网卡

依然范特西╮ 提交于 2019-12-01 23:36:10
在这一篇中,我们首先让开发板对CS8900或者DM9000X网卡的支持,然后再分析实现u-boot怎样来引导Linux内核启动。因为测试u-boot引导内核我们要用到网络下载功能。 7)u-boot对CS8900或者DM9000X网卡的支持。 u-boot-2009.08版本已经对CS8900和DM9000X网卡有比较完善的代码支持(代码在drivers/net/目录下),而且在S3C24XX系列中默认对CS8900网卡进行配置使用。只是在个别地方要根据开发板的具体网卡片选进行设置,就可以对S3C24XX系列中CS8900网卡的支持使用。代码如下: 现在修改对我们开发板上DM9000X网卡的支持。 首先,我们看看drivers/net/目录下有关DM9000的代码,发现dm9000x.h中对CONFIG_DRIVER_DM9000宏的依赖,dm9000x.c中对CONFIG_DM9000_BASE宏、DM9000_IO宏、DM9000_DATA等宏的依赖,所以我们修改代码如下: #gedit include/configs/my2440.h #define CONFIG_BOOTDELAY 3 /*#define CONFIG_BOOTARGS "root=ramfs devfs=mount console=ttySA0,9600" */ #define CONFIG

U-boot在S3C2440上的移植详解(一) --- NOR FLASH 启动u-boot

喜你入骨 提交于 2019-12-01 23:35:37
一、移植环境 主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器: arm-linux-gcc-4.3.2.tgz u-boot: u-boot-2009.08.tar.bz2 二、移植步骤 1 . 了解u-boot主要的目录结构和启动流程,如下图。 u-boot 的 stage1 代码通常放在cpu/xxxx/ start.S 文件中,他用汇编语言写成; u-boot 的 stage2代码通常放在lib_xxxx/board.c 文件中,他用C语言写成。 各个部分的流程图如下: 2. 建立自己的开发板项目并测试编译。 目前u-boot对很多CPU直接支持,可以查看board目录的一些子目录,如:board/samsung/目录下就是对三星一些ARM处理器的支持,有smdk2400、smdk2410和smdk6400,但没有2440,所以我们就在这里建立自己的开发板项目。 1)因2440和2410的资源差不多,主频和外设有点差别,所以我们就在board/samsung/下建立自己开发板的项目,取名叫my2440 #tar -jxvf u-boot-2009.08.tar.bz2 //解压源码 #cd u-boot-2009.08/board/samsung/ //进入目录 #mkdir my2440 /

s3c2440的Memory Controller与外设地址线错位连接分析

扶醉桌前 提交于 2019-12-01 06:56:54
在s3c2440数据手册中如图所示: 外设Flash数据位宽为8bit时,(Memory Cotroller 的地址线 )A0——A0(外设Flash 的A0); 外设Flash数据位宽为16bit时,(Memory Cotroller 的地址线 )A1——A0(外设Flash 的A0); 外设Flash数据位宽为32bit时,(Memory Cotroller 的地址线 )A2——A0(外设Flash 的A0); 原因: CPU的地址线(LADDR0~LADDR20)对应的最小数据单元是字节,即8bit; 在实际应用中,所用到的外设Flash 通常数据位宽有8bit、16bit、32bit,CPU要按照8bit的数据位宽准确获取数据,肯定就是CPU和Flash 存在中间层解决了这个问题,就是Memory Controller 。 根据外设Flash的数据位宽,通过硬件处理,按照每个地址读取8bit的数据处理方式。如数据位宽16bit的NOR Flash,如图所示: 一、从Nor flash读取数据 1、每次获取1byte数据 a、当CPU要获取地址 0 上的数据时,Memery Controller发出地址0b00000000000000000000,NOR Flash 收到地址0b00000000000000000000,返回数据线(LDATA0~LDATA15

使用s3c2440芯片对外挂的nor flash进行读写擦除操作

一曲冷凌霜 提交于 2019-12-01 06:54:52
学习目标: 1、了解nor flash存储芯片的概念和特性 2、掌握使用s3c2440芯片对外挂的nor flash进行读写擦除操作 1、NOR Flash的简单介绍 NOR Flash最早是由Intel公司于1988年开发出的,是现在市场上两种主要的非易失性存储器之一,它的出现彻底改变了存储器市场上由EPROM(Erasable Programmable Read-Only-Memory电可编程序只读存储器)和EEPROM(电可擦只读存储器Electrically Erasable Programmable Read - Only Memory)一统天下的局面。NOR Flash最大特点是支持XIP(Execute On Chip),既程序可以直接在NOR flash的片内执行,在NOR Flash中的代码运行时不需要重定位复制到RAM内。NOR Flash的地址线和数据线分开,数据的读取和RAM很类似,只要能够提供数据地址,数据总线就能正确给出数据。不过不能直接对它进行写操作,执行写操作之前需要先发送固定的命令序列,然后发送写操作的地址和数据。 NOR Flash存储器的最小访问单元一般分为8位和16位的,也有一些NOR Flash器件同时支持8位和16位模式,这种Flash的位宽可以在设计硬件时选择,当芯片的BYTE#引脚接为高电平,芯片工作在位宽16位模式,BYTE

Linux 嵌入式驱动开发:hello world

本小妞迷上赌 提交于 2019-11-30 20:25:01
1、代码编写,只有一个文件,内容如下 文件名为:mini2440_hello_module.c #include <linux/kernel.h> #include <linux/module.h> static int __init mini2440_hello_module_init(void) { printk("Hello, Mini2440 module is installed !\n"); return 0; } static void __exit mini2440_hello_module_cleanup(void) { printk("Good-bye, Mini2440 module was removed!\n"); } module_init(mini2440_hello_module_init); module_exit(mini2440_hello_module_cleanup); MODULE_LICENSE("GPL"); 注解: A、两个头文件是必须的,不要问为什么 B、mini2440_hello_module_init() 驱动加载函数,也是必须的 C、mini2440_hello_module_cleanup() 驱动卸载函数,也是必须的 D、module_init(mini2440_hello_module_init)

LCD编程_使用调色板

梦想的初衷 提交于 2019-11-27 18:33:14
在前面的博客中,使用的像素格式都是16bpp,24bpp(24bpp实际实际上就是32bpp)?如果想使用8bpp时,就需要使用调色板。 在以前的博客中,曾经说过,在framebuffer中如果每个像素用8bpp表示,这8bpp怎么转换成lcd需要的16bpp的数据,需要引入一个调色板。 2的8次方,为256。即调色板中有256项,0-255。需要在调色板所对应的内存里面,填入16bpp的数据(这些数据就是真正的颜色值)。把lcd控制器设置为8bpp时,它会从framebuffer中取出一个像素的数据(8位),使用这8位数据作为一个索引,在调色板中取出真正的颜色,从而就得到了16位的数据。最终将这16位的数据发给lcd。 需要修改s3c2440_lcd_controller.c lcd_controller.c中的代码: 1 #include "lcd.h" 2 #include "lcd_controller.h" 3 #include "../s3c2440_soc.h" 4 5 #define HCLK 100 6 7 void jz2440_lcd_pin_init(void) 8 { 9 /* 初始化引脚 : 背光引脚 */ 10 GPBCON &= ~0x3; 11 GPBCON |= 0x01; 12 13 /* LCD专用引脚 */ 14 GPCCON =

S3C2440 移植最新5.2linux内核

冷暖自知 提交于 2019-11-27 12:23:39
基于 移植uboot后. 1. 移植linux内核 1.1 下载源码 打开 https://www.kernel.org/ 直接肝最新的 5.2.8 下载完后,在ubuntu里解压备用. 1.2 搭建交叉编译环境 1. 交叉编译环境用的是arm-linux-gcc 4.6.4的版本,这个版本挺好找的,在网上下载压缩包后,根据个人习惯解压到 /opt/ 下, 2. 并且修改环境变量 sudo vim /etc/profile export PATH=/opt/gcc-4.6.4/bin:$PATH 3. 保存,然后source /etc/profile 进行更新.稳妥起见,ubuntu要注销一下,重新登录. 4. 确定:在窗口输入arm-linux-gcc -v 显示的是你的编译环境就可以啦. 注:是可以多版本gcc编译器 " 伪共存 " 的,我这里就是gcc 3.4 的也有一份, 需要的时候,把环境变量注释一下留下需要的版本就好了.我觉得这样很方便. 1.3 修改时钟频率和mtd分区 s3c2440 支持2中时钟晶振:12MHz 和 16MHz,我这个板子上用的是12MHz, 所以修改 arch/arm/mach-s3c2440/mach-smdk2440.c s3c24xx_init_clocks(16934400); 改为: s3c24xx_init_clocks

FL2440移植Linux2.6.33.7内核

点点圈 提交于 2019-11-26 14:59:36
kernel version:2.6.33.7 /linux-2.6.33.7 OS:CentOS 6.4 cross-compilation chain:arm-linux-4.3.2 /usr/local/arm/4.3.2/bin 第一步:修改配置 (1)选择合适的内核代码,作为硬件参考目标平台 arch/arm/mach-s3c2440 内核版本支持s3c2440,所以不需要作修改。 (2)修改顶层Makefile 设置体系架构:line193:ARCH?=$(SUBARCH)改为ARCH=arm 设置编译工具:line194:CROSS_COMPILE?=改为CROSS_COMPILE=arm-linux- (3)修改输入时钟 修改arch/arm/mach-s3c2440/mach-smdk2440.c中line163:s3c24xx_init_clocks(12000000) 第二步:给内核打支持yaffs2文件系统的补丁 (1)下载:git clone git://www.aleph1.co.uk/yaffs2 (2)解压到/root,执行 ./patch-ker.sh c m /linux-2.6.33.7 第三步:配置内核 (1)选择参考配置文件 选择arch/arm/configs/s3c2440_defconfig作为配置参考。复制s3c2440