
S3C2440学习之旅
文章平均质量分 96
涉及基于S34C2440的PCB电路板制作、uboot移植、内核移植、linux驱动移植等内容,从零搭建基于S34C2440的定制系统。
【星星之火】
请认真的去做好一些事情。
展开
-
【总结】嵌入式linux内核中Makefile、Kconfig、.config的关系及增加开机Hello World
一、增加内核启动Hello World任务:内核启动的时候加载Hello驱动,并打印出Hello World步骤:(1)在drivers目录下新建hello文件夹,在里面实现相应的hello.c、Makefile、Kconfig(2)修改上一级(linux-3.4.2/drivers下)的Makefile、Kconfig(3)make menuconfig 进行配置(4原创 2017-06-27 11:04:46 · 3462 阅读 · 2 评论 -
【总结】linux下比较文件不同+制作补丁+使用补丁+压缩文件
以制作uboot补丁为例制作补丁:(1)首先clean 一下:(2)修改文件名,解压新文件(3)制作补丁u 输出格式r递归比较文件N 有一个文件没有就当做空 (4)补丁文件使用补丁(5)patch 命令cd 要打补丁的新目录下patch -p1 (6)压缩文件zip -r -q -o u-boot-原创 2017-04-27 10:20:44 · 1381 阅读 · 0 评论 -
【总结】嵌入式linux常用命令
这里就不分类了,用到一个直接添加一个。都是嵌入式linux开发中常用到的指令。(1)开发板挂载到虚拟机上mount -t nfs -o nolock 192.168.1.101:/work/nfs_root /mnt(2)压缩文件a目录为b.zipzip -r -q -o b.zip a(3)文件打补丁,进入文件目录下,补丁在上一层patch -p1 < ../u-boot.patc......原创 2017-05-12 22:55:30 · 2802 阅读 · 0 评论 -
【总结】嵌入式Linux学习中遇到的问题及解决方法
持续更新。。。(1)uboot中执行nfs 32000000 192.168.1.101:/work/nfs_root/uImage_new,下载新内核时出现:TTT***ERROR:Cannot umount。如下图:解决方法:在linux虚拟机下输入:sudo vi /etc/hosts。在里面加上一行:192.168.1.17 /work/nfs_root/原创 2017-06-01 19:34:54 · 4143 阅读 · 0 评论 -
【实战】嵌入式linux修改内核启动的LOGO界面
默认是小企鹅,现在我们换成一张自己的图片。准备好BMP或者PNG 图片,若是别的格式的图片,可以使用Windows自带的画图软件打开,然后另存为BMP或者PNG格式,Logo图片分辨率不大于LCD分辨率480*272,否则无法正常显示。1. 安装资料光盘Ubuntu 9.10没有的图片转换工具netpbm$ sudo apt-get install原创 2017-06-19 18:04:26 · 6042 阅读 · 5 评论 -
【实战】移植QT5.6.0到嵌入式linuxS3C2440单板
欢迎扫码关注微信公众号:柒零玖嵌入式,更多嵌入式软硬件相关分享! 目前网上关于QT5.6的移植教程还不完善,本博客详细说明QT5.6.0移植到嵌入式linux单板的详细步骤。并将移植好的分享在GitHub上。一、实验环境(1)编译工具链arm-Linux-gcc-4.4.3.tar.gz(2)linux系统linux-3.4.2(3)虚拟机16.04.1-Ubuntu(4)bu...原创 2017-06-12 17:36:05 · 7116 阅读 · 1 评论 -
11-S3C2440驱动学习(五)嵌入式linux-网络设备驱动(二)移植DM9000C网卡驱动程序
上一节 我们学习了嵌入式linux-网络设备驱动(一)虚拟网卡驱动程序链接http://blog.csdn.net/fengyuwuzu0519/article/details/72809591 我们实现了一个虚拟网卡驱动程序,现在我们针对真实的网卡芯片DM9000C,编写移植DM9000C网卡驱动程序。一、移植分析(1)DM9000C一般一款网卡芯片,出厂的时候会有厂家自带原创 2017-05-31 17:30:11 · 1819 阅读 · 0 评论 -
11-S3C2440驱动学习(五)嵌入式linux-网络设备驱动(一)虚拟网卡驱动程序
嵌入式linux驱动主要分为三部分:字符设备驱动块设备驱动网络设备驱动字符设备驱动:APP:open、read、write。。。驱动:drv_open、drv_read、drv_write。。。框架:(1)主设备号(2)file_operation结构体(3)原创 2017-05-30 13:35:22 · 3476 阅读 · 0 评论 -
10-S3C2440驱动学习(四)嵌入式linux-LCD驱动程序
一、LCD驱动实现分析内核中包含了LCD驱动程序S3c2410fb.c,通过platform平台驱动框架实现,参考其现在自己写。字符设备驱动编写往往包括,那么LCD也不例外:(1)fbmem.c分析(内核写好的LCD驱动框架,里面实现一些接口,硬件平台来使用)入门函数fbmem_init;fbmem_init(void){ create_proc_read_原创 2017-05-15 14:39:13 · 1225 阅读 · 0 评论 -
09-S3C2440驱动学习(三)嵌入式linux-platform平台总线驱动程序及分离分层构建驱动框架
一、分离分层构建驱动框架input子系统中,采用了分离分层的方式构建驱动程序框架。input.c为核心层,其下有左边的硬件设备相关,和右边的软件handler相关处理函数。二、platform总线驱动框架分析1.参考:Gpio_keys.c (drivers\input\keyboard)2.Bus-drv-dev模型: Bus结构体;drv结构体;dev结原创 2017-05-13 11:05:45 · 979 阅读 · 2 评论 -
08-S3C2440驱动学习(二)嵌入式linux-input子系统分析与应用
内核中,有很多写好的框架、例子等,理解这些框架的流程,把其头文件包含进来。调用系统框架的函数,来实现驱动等。以前自己写,只能是自己的人用,现在用内核现成的写好的,来修改。1、以前我们写驱动register_chrdevfile_operationsmodule_initmodule_exit缺点:不能用在现成的应用程序,别人的应用程序不可以用。别人可能打开tty,s原创 2017-05-06 22:57:25 · 1103 阅读 · 0 评论 -
07-S3C2440驱动学习(一)嵌入式linux字符设备驱动-查询+中断+引入poll机制的按键驱动程序
一、查询方式的按键驱动程序查询方式的按键驱动程序,与LED驱动程序类似,我们来复习一下上节的写好的LED字符设备驱动程序,改写出查询方式的按键驱动程序。首先我们要搭出字符设备驱动程序的框架:#include #include #include #include #include #include #include #include #include #include原创 2017-05-01 10:43:42 · 1690 阅读 · 0 评论 -
07-S3C2440驱动学习(一)嵌入式linux字符设备驱动-按键驱动程序之异步通知机制+原子操作+互斥信号量+阻塞与非阻塞+定时器去抖
一、异步通知机制从按键的实现方式来说,可以分为以下几种方式查询方式,极度耗费CPU资源中断方式,平时休眠,按键按下,唤醒休眠poll机制,不需要一直read,根据poll返回值来决定是否read以上都是应用程序主动去read。下面来介绍异步通知实现按键,由驱动程序,提醒应用程序有按键按下了,告诉应用程序现在需要去read了。1测试应用程序,命令行发信号原创 2017-05-04 20:27:28 · 1083 阅读 · 0 评论 -
07-S3C2440驱动学习(一)嵌入式linux字符设备驱动-LED字符设备驱动
一、嵌入式linux字符设备驱动框架写应用程序的人 不应该去看电路图,但是如何操作硬件呢:调用驱动程序里的open,read,write等来实现。C库里实现了 open 、read、write调用open等:swi val—引发一个异常中断,进入内核异常处理函数。系统调用接口:根据发生中断的原因,调用处理函数(sys_open,sys_read等)。sys_open:根据调原创 2017-04-28 21:20:21 · 1490 阅读 · 0 评论 -
06-S3C2440学习之移植2012u-boot到S3C2440(移植过程五--最终)裁剪+修改默认参数+分区设置+支持文件系统下载
(1)Uboot可以配置一些环境变量,Uboot执行的时候:1读参数2判断是否有效3无效则用默认写死的值(2)搜索下using defaultenvironment网太卡 晚上再更新。原创 2017-04-25 16:40:24 · 867 阅读 · 0 评论 -
06-S3C2440学习之移植2012u-boot到S3C2440(移植过程四)支持Nand Flash+支持DM9000网卡
移植 uboot到S3C2440(移植过程一)新建单板+修改时钟+SDRAM+UART过程中,为了避免当时编译出现的错误,我们屏蔽了include/configs/smdk2440.h://#defineCONFIG_CMD_NAND(1)取消#defineCONFIG_CMD_NAND的注释,编译出现如下错误:原创 2017-04-21 08:53:38 · 834 阅读 · 0 评论 -
06-S3C2440学习之移植2012u-boot到S3C2440(移植过程三)支持NorFlash
上一节 我们实现了支持nand flash 启动(点击查看),并不代表uboot此时可以对nand进行读写操作,只是可以把uboot烧写到nand然后上电后,对代码 进行重定位,实现了nand启动。这一节我们加入对nor 的支持,使uboot可以识别出nor flash 并可以读写nor flash。(1)查看上一节最后的报错:(2)搜索Flash:查看代码:原创 2017-04-20 13:21:18 · 1825 阅读 · 0 评论 -
06-S3C2440学习之移植2012u-boot到S3C2440(移植过程二)支持NAND启动
说明:原来的代码在链接时加了"-pie"选项, 使得u-boot.bin里多了"*(.rel*)","*(.dynsym)"(*(.rel*)","*(.dynsym)这些地址信息用于实现UBOOT可以被拷贝到任何地方,更新地址信息),但使得程序非常大,结构复杂,不利于从NAND启动(重定位之前的启动代码应该少于4K)。所提去掉了pie功能。(1)使用一下之前写的init.c原创 2017-04-19 16:50:01 · 1011 阅读 · 0 评论 -
06-S3C2440学习之移植2012u-boot到S3C2440(移植过程一)新建单板+修改时钟+SDRAM+UART
一、移植u-boot-2012.04之修改代码之建新板_时钟_SDRAM_UART(1)cd board/samsung/cp smdk2410 smdk2440 –rfcd ../..cd /include/configs/cp smdk2410.h smdk2440.h原创 2017-04-18 09:54:48 · 1410 阅读 · 2 评论 -
05-S3C2440学习之内核(移植)linux3.4.2移植(4)支持LED驱动、按键驱动
一、前面的工作:(1)从头移植3.4.2内核,修改分区,制作jffs2文件系统http://blog.csdn.net/fengyuwuzu0519/article/details/69802922(2)修改内核支持yffs2、制作yffs2文件系统、内核裁剪、制作补丁http://blog.csdn.net/fengyuwuzu0519/article/details/701原创 2017-06-11 10:03:50 · 1082 阅读 · 0 评论 -
05-S3C2440学习之内核(移植)linux3.4.2移植(3)之支持DM9000C网卡及修改支持串口2
之前我们裁剪并移植好了linux3.4.2内核 http://blog.csdn.net/fengyuwuzu0519/article/details/70162666也学习过 移植DM9000C网卡驱动程序到linux2.2.26内核上http://blog.csdn.net/fengyuwuzu0519/article/details/72821567接下来我们在此基础上,在l原创 2017-06-02 17:39:27 · 2307 阅读 · 0 评论 -
05-S3C2440学习之内核(移植)linux3.4.2移植(2)之yffs2文件系统移植+内核裁剪+内核制作补丁
yffs文件系统更加支持nand设备上节移植了jffs2文件系统(点击查看)到移植的内核中,这节我们将yffs2文件系统移植到刚移植好的内核中。(1)获取源码并解压git clone git://www.aleph1.co.uk/yaffs2tar xjf yaffs2.tar.bz2(2)给内核打上yffs2补丁./patch-ker.sh c m /ho原创 2017-04-13 22:28:05 · 1484 阅读 · 0 评论 -
05-S3C2440学习之内核(移植)linux3.4.2移植(1)之简单移植+修改MTD分区+制作jffs2文件系统
一、框架介绍及简单修改1.1 Bootloader如何引导内核内核:想启动应用程序—需要挂接根文件系统—装载驱动程序(flash、网卡)--要解析参数(文件系统在哪)--根据R1判断内核是否支持该ID—支持调用初始化相关函数每个开发板都有不同的硬件参数,我在内核里针对这个开发板给他一个ID。Uboot启动的时候传入和内核中设置好的匹配起来。1.2 移植l原创 2017-04-09 11:48:05 · 3022 阅读 · 3 评论 -
04-S3C2440u-boot学习之u-boot分析(5)_uboot启动内核
参考《韦东山1期视频》第09课第5节 u-boot分析_uboot启动内核.WMV(1)启动内核主要命令: s = getenv ("bootcmd"); debug ("### main_loop: bootcmd=\"%s\"\n", s ? s : ""); if (bootdelay >= 0 && s && !abortboot (bootdelay)) {# i原创 2017-02-10 09:27:20 · 1036 阅读 · 0 评论 -
04-S3C2440u-boot学习之u-boot分析(4)之u-boot命令实现
参考《韦东山1期视频》第09课第4节 u-boot分析之u-boot命令实现.WMV1解析命令:如存在; while (*str) { /* * Find separator, or string end * Allow simple escape of ';' by writing "\;" */ for (inquotes = 0, sep = str;原创 2017-02-09 21:25:11 · 663 阅读 · 0 评论 -
04-S3C2440u-boot学习之u-boot分析(3)之源码第1、2阶段
参考《韦东山1期视频》第09课第3节 u-boot分析之源码第1阶段.WMV一:第一阶段(1)打开u-boot-1.1.6_JZ2440\cpu\arm920t\start.S原创 2017-02-09 11:39:11 · 680 阅读 · 0 评论 -
04-S3C2440u-boot学习之u-boot分析(2)之Makefile结构分析
参考《韦东山1期视频》第09课第2节 u-boot分析之Makefile结构分析.WMV看uboot说明知道,uboot编译需要(1)先配置 make 。。。(2)make。一:uboot学习思路(1)解压打号补丁的u-boot-1.1.6,打开makefile。(2)make 100ask24x0_config相当于执行: @$(MKCONFIG) $(原创 2017-02-09 09:54:35 · 645 阅读 · 0 评论 -
04-S3C2440u-boot学习之u-boot分析(1)编译体验
参考《韦东山1期视频》第09课第1节 u-boot分析之编译体验.WMVU-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。U-Boot从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是根据相应的Linux内核源程序进行简化而形原创 2017-02-08 22:05:24 · 1125 阅读 · 0 评论 -
03-S3C2440学习之自己写bootloader
参考《韦东山2期视频》毕业班第1课自己写bootloader一.编写第1阶段1.bootloader目标:启动内核。(1)从flash把内核读入内存能操作flash、初始化内存、初始化时钟(2)启动内核设置参数(调到内核地址,去哪找根文件系统),跳转执行。最简单的bootloader的编写步骤:1.1 初始化硬件:关看门狗、设置时钟、设置SDRAM、初始化NAND原创 2017-02-11 22:17:09 · 1711 阅读 · 2 评论 -
02-JZ2440裸机学习之系统时钟和UART串口实验
1、S3C2440的系统时钟笔记本CPU可以 1G 2G ,内存133M等2440CPU:400MHz -------FCLKSDRAM:100M/133M----- HCLK串口IIC: -------------------PCLK定时器:---------------------PCLK 通过设置时钟寄存器(称为PLL),把晶振频率变为其他频率,12变为400MH原创 2017-03-28 22:48:00 · 1274 阅读 · 0 评论 -
02-JZ2440裸机学习之NAND FLASH
1首先还要思考2440上电后会自动拷贝NAND 前4K到SRAM中执行。2 nand与2440的接线:3地址空间(1) Nand flash只有数据总线 没有地址总线 (2) SDRAM DM9000 地址总线与2440地址总线相接 因此俩种设备寻址方式不一样(1)片内内存(2)SDRAM(3)网卡(4)寄存器地址等都原创 2017-03-26 10:06:48 · 866 阅读 · 0 评论 -
02-JZ2440裸机学习之MMU内存管理单元
1、MMU定义: MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。2、MMU的作用:(1)权限管理(2)地址映射3、权限管理简介 不同时刻只有一个程序段再跑原创 2017-03-26 21:03:16 · 1132 阅读 · 1 评论 -
02-JZ2440裸机学习之存储管理器
为什么存在存储器管理器:CPU不会管太多,CPU只会发出指令从某个地址读数据:存储器管理器根据地址 知道是什么东西,然后发出片选等信号问题:想访问一个芯片 需要哪些条件(1) 地址线(2) 数据线 8/16/32 数据宽度(3) 时钟频率(4) 芯片相关特性SDRAM有4个bank数据 检索需要原创 2017-03-25 20:21:34 · 1468 阅读 · 1 评论 -
02-JZ2440裸机学习之GPIO实验
1看原理图2设置寄存器,配置引脚3代码现@******************************************************************************@ File:led_on.S@ 功能:LED点灯程序,点亮LED1@***********************************************原创 2017-02-07 16:15:25 · 982 阅读 · 0 评论 -
01-S3C2440学习入门概念+环境搭建
这两年学过很多东西,有点杂,总感觉不够踏实,于是准备写些东西出来记录一下,希望以后复习方便,同时也给大家学习带来一点帮助。借着过年时间充足,从头把JZ2440系统学习一下,希望后面学习心理会更踏实。以下只是自己学习思路,仅供大家参考。首先拿到嵌入式开发板,我们要想的问题是:1.如何下载裸机程序,u-boot程序到开发板?使用openjtag工具,首先要安装openjtag驱动。连接op原创 2017-01-27 10:41:31 · 2978 阅读 · 0 评论