学嵌入式linux,用什么开发板,请大家推荐一下
本帖最后由 sunmoonxzit001 于 2013-1-15 09:21 编辑最近想学嵌入式linux,不知道用什么开发板,请大家推荐一下。谢谢{:smile:}
我想先从了解linux系统开始,然后再学习linux上编程,再转到嵌入式linux上,不知这样的步骤是否可行?{:smile:} 三星的资料最多了,满打街都是 弄个2440入门 最好MINI2440资料比较多
做产品现在用2440有点不明智了, 考虑成本的话用2416
工业上还是直接看AT,TI,飞思卡尔三家的吧。。三棒的货便宜但是工业级的话看你自己了嘿嘿。
推荐下TI 的AM335X系列 便宜 并且带CAN,LCD也不是S3C24XX能比的 学ARM9比较难要坚持啊。哈哈! 学了一年了才感觉刚入门。。。。。。
我是从CE入门的,先学上位机编程,有VC++基础很轻松,然后开始搞驱动,从最简单的IO搞,平时所谓的写驱动的是基础驱动的修改整合了,慢慢就熟悉了,CE要比LINUX简单好多。要是想快速入门的话可以考虑哈哈。
学LINUX比较难。还好有点单片机的经验。对底层操作比较熟悉,到现在也就会弄弄驱动。加油嘿嘿 boyiee 发表于 2013-1-14 16:34 static/image/common/back.gif
学ARM9比较难要坚持啊。哈哈! 学了一年了才感觉刚入门。。。。。。
我是从CE入门的,先学上位机编程,有VC ...
我也在弄WINCE,感觉他的驱动编写很方便,不过要用DDK提供的库函数实现寄存器访问,这点和单片机以及ucos这类的OS有很大区别,还在适应。 tiancaigao7 发表于 2013-1-14 18:41我也在弄WINCE,感觉他的驱动编写很方便,不过要用DDK提供的库函数实现寄存器访问,这点和单片机以及ucos ...
其实还是很方便的,Linux也一样,不可能像单片机一样直接寄存器,
虚拟下,然后像stm32操作库函数一样 学习了,目前正在奋斗中。。。 我想先从了解linux系统开始,然后再学习linux上编程,再转到嵌入式linux上,不知这样的步骤是否可行?{:smile:} 搞个嵌入式linux培训班的课程来看下,就知道要学什么了
C语言基础、C++基础、数据结构、操作系统原理、Linux应用基础、电子电路基础
开课前一周:入学基础测试与辅导(C语言、C++、linux基础、数据结构、电子电路)
第一天上
数电&C语言基础测试
第一天下
C++语言&操作系统基础测试
第二天上
操作系统基础
第二天下
Linux基础
正式课程
序号 课程内容
Linux开发基础一
学习目标:
熟练安装、操作linux系统,
并能配置各种开发环境与常用服务
教学案例:
Linux系统安装
Linux开发平台搭建与开发工具使用
1
Linux 概述; Linux发行版;
Linux开发环境搭建-vmware虚拟机;Linux系统安装
Linux的基础知识; Linux文件系统和文件; Shell的使用;常用的shell命令;Linux的软件安装;
Linux 下的C语言编程基础;Linux下VIM的使用;
编译器GCC的使用;调试器gdb的使用;
Linux下多文件编译与项目管理工具make的使用;
Linux开发基础二
学习目标:
基本掌握C、C++语言,掌握常用数据结构
教学案例:
指法练习游戏
成绩管理系统
2
C语言基础强化
C语言的内存布局与常见库函数
3
数据结构强化
链表、队列、栈、树、哈希表
4
Linux下的C++语言基础强化
面向对象的编程方法 类及对象的封装 类的继承与派生
虚函数与多态性 构造函数与虚构函数
5
小项目:
指法练习游戏
成绩管理系统
嵌入式硬件开发部分
学习目标:
熟悉ARM微处理器体系架构、指令与外围器件;掌握通用外设接口的编程方法。
教学案例:
Watchdog控制程序
RTC时钟控制程序
LCD显示控制程序
ADC转换采集程序
触摸屏控制程序
Nandflash读写控制程序
1
Gec2440硬件开发平台搭建
Bootloader烧写、内核烧写、文件系统烧写
ARM开发调试环境建立
MDK开发环境使用
2
嵌入式微处理器 ARM寄存器 ARM工作模式
ARM异常中断 ARM汇编指令分类
ARM汇编指令寻址方式
ARM汇编程序设计 C及汇编语言混合编程
3
J-Linuk仿真器使用
ARM GPIO应用
ARM存储器控制器
ARM工作模式转换;
4
ARM中断控制器(IRQ和FIQ)
ARM时钟及定时器;
看门狗定时器应用;
5
TFT LCD驱动程序设计
LCD显示曲线及图片;
6
ADC控制器应用;
触摸屏应用及校准
7
NOR Flash应用设计;
NAND Flash应用设计
8
PWM时钟应用;实时时钟及闹钟应用
ARM启动代码设计蜂鸣器控制
嵌入式应用编程部分
学习目标:
熟悉应用各种系统调用
熟悉TCP/IP协议
熟悉基于QT的GUI界面开发
教学案例:
QQ聊天程序
基于QT界面的聊天系统
1、基本应用程序设计
1
Linux交叉开发环境介绍;GNU交叉工具链的使用; 宿主机与PC机间的通信;串口通信;
Minicom配置使用,Windows超级终端配置实验;
NFS共享设置实验交叉调试;
2
文件I/O操作编程;
Linux系统调用与用户编程接口;
Linux中文件及文件描述符概述;
不带缓存的文件I/O操作;标准I/O开发。
文件操作 目录操作 特殊文件
3
Linux进程概述;Linux下进程结构;
Linux下进程的模式类型;Linux下进程管理;
Linux进程控制编程;守护进程;信号及信号处理
4
进程间通信;多线程编程
管道;管道创建与读写;标准流管道;FIFO信号量;
共享内存实现;消息队列实现
线程概述与分类;Linux线程技术发展;线程的实现和基本操作;线程访问控制。
2、网络程序设计
5
TCP/IP协议概述;OSI参考模型和TCP/IP参考模型;
TCP/IP协议栈;TCP和UDP;
套接字基础网络Socket概述;Socket通信原理;
Socket基础编程。
6
小项目:
QQ聊天程序
3、界面程序设计
7
Linux下嵌入式gui编程介绍;
Qt介绍;通过Qt designer认识Qt;
信号和槽;Qt的事件
8
QT中的多线程编程;
Qt 中的网络编程。
9
小项目一:
带QT界面的聊天系统
驱动部分
学习目标:
熟悉bootloader启动原理及流程;掌握U-boot裁剪与移植
熟悉linux内核体系架构;掌握2.6.30内核的裁剪与移植
熟悉文件系统实现原理;掌握制作根文件系统
熟悉常见接口的驱动原理;
教学案例:
移植Bootloader引导程序
GPIO驱动程序
按键中断驱动程序
WatchDog驱动程序
块设备驱动程序
网络设备驱动程序
1
根文件系统制作(cramfs、jffs2、yaffs)
根文件系统的目录结构;根文件系统内容;
常见根文件系统制作;添加设备文件;添加动态链接库;
添加系统应用程序;添加配置文件;
2
支持QT显示的根文件系统制作
文件系统的目录结构;带QT根文件系统的主要内容;
添加LCD与触摸屏等设备文件;添加QT动态链接库;
添加系统应用程序;添加系统配置文件支持QT显示;
3
Bootloader介绍;GEC2440Bootloader分析;
常见bootloader源码分析;
4
u-boot配置与编译;
u-boot移植;
u-boot 使用
5
Linux内核结构
配置与编译移植Linux内核模块设计
配置裁剪Linux内核并移植到GEC2440开发板
6
字符驱动
GPIO设备驱动,实现电子开关功能
7
驱动的中断 延时并发控制
设备驱动的阻塞与非阻塞、异步通信
按键中断驱动,实现电子键盘功能
8
块设备驱动
9
网络设备驱动 网卡设备驱动
10
设备驱动调试与移植技巧
项目实战部分
学习目标:
熟悉实际项目开发流程;掌握项目开发平搭建;积累项目开发经验
研发项目:
基于2440的无线网络播放机VOD
项目能力重点实战
项目设计能力 记下经验 也想学这些 标记下。。。 我的体会,与硬件结合紧密用linux,可以直接控制硬件,WINCE我还没学不确定能直接控制硬件 找本好书,比如s3c2410的,然后跟着书上的例程做。
linux开发,比较麻烦的还有linux操作环境的熟悉,安装一个ubuntu吧,能简化一些。
有问题google。 NJ8888 发表于 2013-1-15 16:04 static/image/common/back.gif
我的体会,与硬件结合紧密用linux,可以直接控制硬件,WINCE我还没学不确定能直接控制硬件 ...
可以介绍下嵌入式Linux学习步骤么?需不需要钻研Linux内核? 本帖最后由 NJ8888 于 2013-1-21 18:07 编辑
aworker 发表于 2013-1-21 15:35 static/image/common/back.gif
可以介绍下嵌入式Linux学习步骤么?需不需要钻研Linux内核?
不用管内核,我现在直接在应用层控制GPIO SPI 非标波特率串口 看门狗等等,还把系统时钟关了,当然不能调度了,只能复位。。。。。。。。。。一概没动内核,自由吧。任何寄存器地址都能在应用层自由控制,当然这是不符合规范的,我试过标准SPI驱动调用控制FPGA,读个字节从应用代码写read到SPI出时钟也要44us,实在太慢,直接控制的话只要2us时钟就出来了,那个非标串口我用1.58MBaud,普通方式根本不让你配置,内部已经用枚举限定了。墨守成规用分层驱动来搞,只能一个结论:我的项目不可行,因为数据传输太慢了-------------------------------------现在公布秘诀:用mmap方式把物理地址映射到应用程序的虚拟地址上,这样应用层就能自由访问物理地址,当然有意识改系统资源或是疏忽都可能使系统崩溃 mark一下~ NJ8888 发表于 2013-1-21 17:51 static/image/common/back.gif
不用管内核,我现在直接在应用层控制GPIO SPI 非标波特率串口 看门狗等等,还把系统时钟关了,当然不能调 ...
这样子玩玩还可以,真的要做产品;这个态度不好,至少要理解什么时候使用映射比较好,什么时候必须要使用内核(例如中断);
内核和APP之间数据传递的几种方式等等,就是总结才能真正的掌握知识,个人理解。 先记下了,学过一段时间,后面再继续! 转:与一线Linux嵌入式开发工程师的对话
陈工程师一直做Linux的嵌入式开发,作为在开发一线的工程师,他对很多问题的看法可能更切合实际需求,于是,通过邮件,就嵌入式开发方面的问题,请他谈了一下自己的看法: 问:关于嵌入式开发,我们准备给同学们讲解一些入门知识,从你一线开发经验来说,给我们一些建议:
陈工回答:
对于嵌入式Linux入门,如果有一定基础,可以从驱动开始;如果没有基础,我个人建议还是从应用程序开始。因为从应用程序开始是最容易的,也是 最直观的。而驱动程序运行在内核态,驱动本身的结构就比较复杂,如果要彻底弄明白驱动的运行机制,必定牵涉内核,对于高年级的学生恐怕问题会少一些,而 对于低年级的学生,问题估计较多。我曾经遇到过一些初学者,就是一入门就栽了,失去了信心,当然这只是少数。不过,如果在遇到问题之后,能够得到即时、 正确的点化,那就是好事了。
既然您决定讲驱动,那就从内核模块开始。在PC上就可以进行的虚拟设备实验,如基于内存的内核模块。可以考虑从模块的结构、编译、插入、卸载等方 面进行阐述。
驱动模块无非分字符驱动、块设备驱动和网络驱动三大类。但是一定要让学生知道,任何一个系统,特别是嵌入式系统,并且在目前的嵌入式Linux产品 开发中,最简单、最重要、最多、最复杂的也是字符设备驱动,从IO驱动到串口驱动、到USB驱动等等,广义上都是字符驱动。让学生最好专注于字符设备驱 动,因为一个嵌入式设备,网卡一般一块,FLASH一般也是一块(也包括几块组成的FLASH组),但是这两方面,基本都有完善的驱动,如网卡驱动有很 多,块设备驱动,硬件层已经有通用接口,不管是NOR FLASH还是NAND FLASH,文件系统层更是有了非常多、非常成熟的文件系统,如 JFFS2、YAFFS、YAFFS2、EXT2、EXT3、ROMFS、CRAMFS等等,无需我们再去研究,学会应用即可。而除此之外的其它设备, 如AD、DA、CAN、RS485等等,都是需要根据应用来进行设计的,这才是一个产品区别于其它产品的重点,更是市场价值增值点。
另外呢,也是前一点引申为而来的,学习Linux,准备做产品的话,不要把Linux当成了终极目标(当然,这是对应用而言的),要有只是把 Linux当成一个平台的思想。更重要的还在各种产品所需求的专业技术,如通信方面像CAN、RS485、GPRS等等,或者工业控制方面,IO控制、 实时特性等等。Linxu博大精深,研究起来永无止境,但是在产品中,只要到了一个产品够用就可以了(当然,多一些更好,要视人而定)。
问:嵌入式应用程序的开发,应用场景较多的是图形界面还是字符界面,如果是图形界面,开发环境QT和Minigui哪一种更合适,哪种类型的应用程序在嵌入式系统中应用比较多?
陈工回答:
对于嵌入式Linux的应用,大多数的应用并不需要图形界面,比如交换机、路由器、嵌入式网关以及服务器等等。图形界面呢,主要应用在多媒体、手机等手持设备和一些需要图形界面的人机交互系统。
嵌入式Linux可选图形界面很多,上网找找的话,可以发现远非我们常说的QT、MiniGUI等。包括Tiny-X,matchbox、OPIE、GPE等等。不同GUI有自己的特色,有自己的特殊应用场合,对于产品开发,根据需要选择合适的GUI。对于学习,自然是选择容易得到、容易开发的GUI。QT是一个不错的选择,由于QT有一个PC上的模拟器,可以在没有实际液晶LCD的情况下,甚至在没有任何硬件的情况下都可以在PC上进行模拟开发。QT是收费的,当然,有免费版可用。MiniGUI呢,纯粹国产的,支持国货,可以考虑选择MiniGUI。这是一个轻量级的嵌入式GUI,可以跨平台,学习版也才100多块。MiniGUI可以用于工业控制场合,QT在这方面的应用目前还没有遇到,主要用在手持设备。
我们在开发中采用Tiny-X,这也是一个可以用于工业控制的GUI,基本兼容X-Window,体积小,占用资源少,速度快,稳定。
对于Linux的应用程序开发,除了GUI程序之外,最基本的应用程序有:
(1)串口编程。无论是在Windows下还是Linux下,串口编程都是极为复杂的,但是非常锻炼一个人的编程水平和能力。
(2)网络编程以及WEB相关编程。网络编程的tcp、udp、tcp/ip等。至于WEB编程,主要是在系统开启一个WEB服务器,制作一些网页,通过远程登录能够对整个系统进行配置甚至升级等功能。比如我们的路由器配置网页。这种应用在以后会越来越广泛。
(3)另外一个就是Shell编程了。Shell的作用我想,*NIX世界的人都很清楚。在很多应用里面,通过一些非常富有技巧性的Shell脚本,实现了非常复杂的功能,包括远程系统升级等。
以上我提到的这3方面,非常易于实验,在没有硬件,只有PC的情况都可以做。
学生电脑安装ubuntu,那以后配置嵌入式Linux开发环境可能遇到的问题会多一点。不过没关系,能够解决的。在我个人看来ubuntu适合于家用、办公,但要用于开发,配置难度稍微大一点。不过没有办法,现在电脑硬件太新,最适合的RedHat 9.0无法安装。 NJ8888 发表于 2013-1-21 17:51 static/image/common/back.gif
不用管内核,我现在直接在应用层控制GPIO SPI 非标波特率串口 看门狗等等,还把系统时钟关了,当然不能调 ...
看到网上有说:Linux移植到特定硬件上,需要进行裁剪,还要开发相应的BSP驱动,这些工作也不需要学习内核么? 我也想学习一下。不知如何入手。 嗯,学习嵌入式linux 至少要对内核有个大致的轮廓吧,《Linux内核设计与实现》不错,薄薄的一本。 mark一下,系统离我太遥远了 在工作项目中学吧, 不然大致为板子吃灰, 坚持不了几天.............. mark一下 建议买个板子,看韦东山的视频学习,入门到精通都没问题 linux是我心中的永远的痛{:mad:}{:mad:}{:mad:}{:mad:}{:mad:}{:mad:} 楼主想学习嵌入式开发的话,果断买个韦东山的开发板+韦东山的视频,保证不后悔! xi_liang 发表于 2013-1-15 10:03
搞个嵌入式linux培训班的课程来看下,就知道要学什么了
C语言基础、C++基础、数据结构、操作系统原理、 ...
我觉得这个安排比较合理,之前学嵌入式方法不对,浪费了好多时间 现在学习建议选择4412开发板了,四核心技术,迅为的板子不错,学习有提供配套视频教程 我以前学过STM32,所以直接买的ARM9,友善之臂的板子。 xi_liang 发表于 2013-1-15 10:03
搞个嵌入式linux培训班的课程来看下,就知道要学什么了
C语言基础、C++基础、数据结构、操作系统原理、 ...
mark。 准备学习 准备学习 我之前用的是韦东山的JZ2440开发板 没项目就不要学了 mini2410{:smile:}{:smile:},资料比较多 学好了是不是可以做安卓开发? 开发板合适就行了,基本资源有就行了,关键是自己要努力写代码,这个才是王道!! wangcjishu 发表于 2014-4-11 10:21
建议买个板子,看韦东山的视频学习,入门到精通都没问题
不做项目也是难搞啊! Chash 发表于 2014-9-15 12:42
不做项目也是难搞啊!
要多实践的,特别是嵌入式,需要韦东山的视频或者开发板,联系我吧! Chash 发表于 2014-9-15 12:42
不做项目也是难搞啊!
韦东山的视频有项目部分可以跟着学啊,而且有一定的深度。 lg05128018 发表于 2014-9-15 13:03
要多实践的,特别是嵌入式,需要韦东山的视频或者开发板,联系我吧!
韦东山的开发板能便宜? vctor、南 发表于 2014-10-14 10:51
韦东山的开发板能便宜?
。。
联系我就好了,注明是坛友,谢谢!看我的签名! 树莓派我觉得入门挺好,资料多 2440、6410、不行就4412,ARM A8高大上的! 韦东山的视频和开发板挺不错的,就是没时间学习 哈哈,可以给建议 看基础了,应用入门简单些 用Qemu就可以,同事在IBM/Intel做Linux内核开发,平时都用Qemu. 韦东山的板子、视频 这么多人说好? caoyannay 发表于 2014-10-20 10:42
用Qemu就可以,同事在IBM/Intel做Linux内核开发,平时都用Qemu.
Qemu只是虚拟一个可以运行linux的环境啊
楼主的本意应该是想学arm下的linux驱动及应用开发吧,Qemu好像不行吧? xi_liang 发表于 2013-1-15 10:03
搞个嵌入式linux培训班的课程来看下,就知道要学什么了
C语言基础、C++基础、数据结构、操作系统原理、 ...
这确实是个好思路 到位! boyiee 发表于 2013-1-14 16:24
弄个2440入门 最好MINI2440资料比较多
做产品现在用2440有点不明智了, 考虑成本的话用2416
现在还可以用2440入门吗?6410入门难吗? 看看了,准备学习 一直在学,断断续续。。。 年前学了会儿,现在又暂停 了,诶。 我来看看,准备开始学习这个 韦东山的 linux 有本书~ 在用4412,感觉三星的资料还是很丰富的,Linux、Android都可以学到了 J2440吧 现在还是4412更靠谱 啃imx283中{:biggrin:}{:biggrin:} 入手了一块三星的4412,A8的核,感觉先搞驱动比较好 董董董 发表于 2016-12-21 10:57
入手了一块三星的4412,A8的核,感觉先搞驱动比较好
esynos 4412是Cortex A9 好不? 学习一下
页:
[1]