嵌入式是先学习linux内核还是先学习驱动
先学习linux
嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一,同时也是当今IT领域仅存的几个金领职位之一。当前的中国IT人才面临严重的“后继乏人”,而且这种缺口最大的,就是高级IT人才。如果你从事的IT培训不专业,面对竞争越来越激烈的职场,基本找不到工作。据专家预测,嵌入式每年人才缺口在30万左右。
嵌入式开发学习具体步骤如下:
基础学习期 I:·Linux基础操作、基本服务配置及使用
·Shell编程
基础学习期II:·C语言
·数据结构、(选修)C++、QT
基础进阶:·Linux高级编程、Socket网络编程
·TCP/IP
嵌入式:·嵌入式汇编
·嵌入式体系结构
嵌入式晋级提升:·Linux内核
·Linux驱动开发
经典学习案例:
GPIO驱动
RTC时钟驱动
WatchDog驱动
Udev移植
触摸屏输入设备驱动
LCD显示设备驱动
DMA驱动
音频设备驱动
Nand Flasha块设备驱动
网络设备驱动
现在,国内似乎在进行一个全民学习嵌入式的运动,但据了解,很多人在整个学习的过程中,由于某些技术领域的空白或者是技术尚未成熟,再加上个人学习方法不正确,给个人的学习造成了极大的阻碍,遇到这种情况该如何解决?根据本人有限的学习经验,给学习嵌入式的以下建议。
给学习嵌入式者10点建议:
遇到问题,首先进入baidu.com、www.google.com(或是其他搜索引擎)搜索一下,任何一个嵌入式工程师都不敢否认,这是学习嵌入式最好的老师!
尽可能多的论坛,遇到问题,及时发贴,情况紧急的时候,可以在不同的论坛同时发贴,这样,并行处理你的问题也许会解决得更快些。
尽可能多的结交嵌入式高手,最好是在公司上班的嵌入式工程师,他们有一个优势:了解市场,了解业界的发展动态.和他们多混混,对尚未上班的学习者来说,是非常有必要的。
要经常进入一些好的嵌入式网站,尤其是一些国外的网站,去看看嵌入式的发展动态,并且,要把这些网站都收集起来。
如果可能,我建议大家在网上订一下电子刊物,这些电子刊物是按时发到你邮箱的,那些资讯都是最新的,可以说是很前卫的了.....如果资金允许,建议报名参加嵌入式培训班,在培训公司可以很快的入门提高,这样可以更好的提高学习效率。
相信自己的选择,相信自己行业的发展前景,要对自己的选择和自己的行业有浓厚的兴趣,这一点做不到,你就很难学到很高深的层次!
追求要执着!刚开始学习嵌入式系统,肯定会遇到很多问题,我当时也是这样,学了三个多月,好像一点进展都没有,我在怀疑:难道我不适合搞嵌入式?当时我也想过放弃,但心里太不甘心了,脚都踏出了一只,我不能就这样屈了!于是就硬上,不断的琢磨....(现在,终于知道什么是嵌入式linux了,哈哈....)
不要对自己要求过高,只要你比昨天进步了一点,你就离成功又近了一步!学习嵌入式也忌浮气燥(其实这一点,我最有感触!),也就是要踏实。
万丈高楼平地起,不要忽略了低层的东西,你越是学习到高层的技术,越是发觉低层的东西有用,这些大家以后会有所体会的!我大一学习51单片机的时候,感觉它没什么用处,大二学习ARM处理器,才知道,没有51的基础,可能还不知道要多花多少时间才能搞懂ARM的硬件。
系统的选型的问题.现在的开源操作系统已经很多了,并且也做得非常成熟,初学者也会为此而烦恼.目前较为流行的嵌入式操作系统有:linux,winCE,VxWork,uC/OS2等等....主要区别在于实时性的问题.如果你是搞自控(像我学习的专业,不过我不玩控制的....),学习实时性高一点的操作系统更有帮助,如VxWork.如果你想以后搞民用产品,如手机,机顶盒,终端设备之类的,学习linux,winCE这些方便于多任务运行的操作系统较好!建议你在学习之前先了解该系统的市场占有率,学东西得看看学完它之后到底有没有作为啊,否则,你就一辈子只有自己玩系统啰...
来源:http://jingyan.baidu.com/article/00a07f38abc95682d128dc58.html
arm嵌入式、linux驱动开发应该怎么学?
嵌入式零基础学习路线:
1)学习 Linux系统安装、常用命令、应用程序安装。
2) 学习 Linux 下的 C 编程、这本书必学《UNIX 环境高级编程》、《UNIX 网络编程》,Rechard Stevens 写的,C 高手大都学习过《C 和指针》、《C 缺陷与陷阱》、《高质量C/C++编程指南》、《C 专家编程》、《The C programming Language》
3)程序员大都要学:数据结构,嵌入式程序员数据结构必学!
4)底层开发人员大都要学:微机原理、计算机体系结构,嵌入式开发人员必学!
5)单片机可以让一个从事软件开发的人了解和如何操作硬件,有必要学,因为一开始就从 ARM 入手,不太现实!
6)ARM 体系结构,其中有汇编。
7)数字电路有必要学习,不然你在做底层开发时真的会不知道怎么看原理图,起码也得懂与或门吧。
8)ARM + Linux 应用程序开发。(前提是要有开发板)
到此,你勉强算是在嵌入式Linux 这个行业有了初步入门了吧, 但遗憾的是这还远远不够!
9)要做底层开发,就必须知道软硬件之间是如何衔接和配合工作的,那么电子技术应该要好好学习了,很多时候会用到模拟电路知识,这是区别好手与菜鸟的不同之处之一。
10)Linux 下的汇编要学,这样你才能真正了解你写的程序是如何在一个特定的硬件上跑的。这是区别好手与菜鸟的不同之处之二。
11)TCP/IP 协议栈要学,所有的嵌入式高手都得掌握的东西,这是区别好手与菜鸟的不同之处之三。
12)有了这些东西,拿下 Linux 驱动已经不再话下,需要你去学习 Linux 内核源代码和Linux驱动程序设计,这是一个技术升华。
13)音频、视频的解码译码技术你得学。
14)各种 IC ,各种 bootloader 你能够参与其开发设计。
15)自行设计开发新产品,新技术。
编程语言是什么?
编程语言是一种用来定义计算机程序的形式语言,同时也是一种被标准化的交流技巧,用来向计算机发出指令,一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。
编程语言有很多种,常用的有Java、、Python、PHP、JavaScript、Go语言等,每种语言都有自己擅长的方面。
学习Linux的有哪些步骤?
对于Linux的学习,可以分为四个阶段,Linux初级入门阶段→Linux中级进阶→Linux高级进阶→Linux资深方向细化阶段
第一阶段:初级阶段
初级阶段需要把linux学习路线搞清楚,任何学习都是循序渐进的,所以学linux也是需要有一定的路线。
1. Linux基础知识、基本命令;
2. Linux用户及权限基础;
3. Linux系统进程管理进阶;
4. linux高效文本、文件处理命令;
5. shell脚本入门
第二阶段:中级进阶
中级进阶需要在充分了解linux原理和基础知识之后,对上层的应用和服务进行深入学习,其中说到服务肯定涉及到网络的相关知识,是需要花时间学习的。
1. TCP/IP网络基础;
2. Linux企业常用服务;
3. Linux企业级安全原理和防范技巧;
4. 加密/解密原理及数据安全、系统服务访问控制及服务安全基础;
5. iptables安全策略构建;
6. shell脚本进阶;
7. MySQL应用原理及管理入门
第三阶段:Linux高级进阶
1. http服务代理缓存加速;
2. 企业级负载集群;
3. 企业级高可用集群;
4. 运维监控zabbix详解;
5. 运维自动化学习;
第四阶段:Linux资深方向细化
1. 大数据方向;
2. 云计算方向;
3. 运维开发;
4. 自动化运维;
5. 运维架构师
Linux 学习基本步骤
对于Linux的学习,可以分为四个阶段,Linux初级入门阶段→Linux中级进阶→Linux高级进阶→Linux资深方向细化阶段
第一阶段:初级阶段
初级阶段需要把linux学习路线搞清楚,任何学习都是循序渐进的,所以学linux也是需要有一定的路线。
1. Linux基础知识、基本命令;
2. Linux用户及权限基础;
3. Linux系统进程管理进阶;
4. linux高效文本、文件处理命令;
5. shell脚本入门
第二阶段:中级进阶
中级进阶需要在充分了解linux原理和基础知识之后,对上层的应用和服务进行深入学习,其中说到服务肯定涉及到网络的相关知识,是需要花时间学习的。
1. TCP/IP网络基础;
2. Linux企业常用服务;
3. Linux企业级安全原理和防范技巧;
4. 加密/解密原理及数据安全、系统服务访问控制及服务安全基础;
5. iptables安全策略构建;
6. shell脚本进阶;
7. MySQL应用原理及管理入门
第三阶段:Linux高级进阶
1. http服务代理缓存加速;
2. 企业级负载集群;
3. 企业级高可用集群;
4. 运维监控zabbix详解;
5. 运维自动化学习;
第四阶段:Linux资深方向细化
1. 大数据方向;
2. 云计算方向;
3. 运维开发;
4. 自动化运维;
5. 运维架构师
如何让uboot启动时显示logo
自定义u-boot的开机logo的方法
我用的u-boot是2009.08版的。想要修改开机logo为自定义的图片,而不是原来的denx.bmp。
方法其实很简单,只需替换u-boot的tools/logos目录中的denx.bmp,再重新编译(可能需要先执行make clean,再make,新的图片
才会起作用),图片大小不要起过你的屏的大小,色彩深度不能大于256色,即8位色深的图片。
不过,如果你不想替换denx.bmp,而要用自已的图片文件,比如,我用的是rat-linux.bmp文件,也可以。把你的文件拷贝
到/tools/logos目录中,再修改/tools目录下的makefile文件,找到以下代码段
ifeq ($(LOGO_BMP),)
LOGO_BMP= logos/denx.bmp
endif
ifeq ($(VENDOR),atmel)
LOGO_BMP= logos/atmel.bmp
endif
ifeq ($(VENDOR),ronetix)
LOGO_BMP= logos/ronetix.bmp
endif
将其中的LOGO_BMP= logos/denx.bmp改为 LOGO_BMP= logos/rat-linux.bmp即可。重新编译,你的图片就可以起作用了。
U-boot开机logo的制作方法
在有实现LCD显示和LCD命令行终端的U-boot中,在左上角都有显示一个logo,如果是atmel的芯片,就会有atmel的logo,三星的则是denx的logo。
有的网友发邮件说想改成自己公司的Logo,而且如果是自己玩的话,改成自己喜欢的logo也爽阿。所以今天我做好了实验,将简单的修改方法总结如下:
一、图片的放置路径
所有的开机logo都放在了 /tools/logos 之下,你只需要将你的班子作对应的logo替换就好了。
对于S3C2440,你只需要将denx.bmp替换成你想要的logo就好了。
对于ATMEL的芯片,据说会显示ATMEL的logo,所以替换那个logo即可。
但是你所替换的logo必须和原来的大小、格式一模一样,否则会出现u-boot使用过程中宕机重启的后果。
二、图片的大小标准
不同的logo对应不同的大小,这里S3C2440所对应的是160*96分辨率的BMP图片。
三、图片的转换脚本
在制作图片前,请您现确认您的Linux主机上安装了Netpbm 工具包。如果是ubuntu,你可以直接用新立得安装;如果是别的发行版,可以在 Netpbm主页 下载源代码编译。
将你想要的图片裁减成160*96的JPG图片,然后用以下的脚本处理一下就好了:
#!/bin/sh
#install Netpbm first
jpegtopnm $1 | ppmquant 31 | ppmtobmp -bpp 8 > $2
使用方法: (脚本名) ( 待处理的JPG图片名) (输出文件名)
2.6 的Kernel LOGO真容易改试着改了一下,似乎比2.4容易。2.6的logo数据在/drivers/video/logo里,ppm文件就是logo图像了。每 个ppm对应一个.c文件,内容大概就是图像尺寸、调色板、位图数据等信息。.c文件无需自己建立,在make的时候如果不存在某个ppm文件对应的.c 文件,就会自动从ppm生成一个,然后把它编译成.o文件。所以看看目录下哪些.ppm文件有同名的.o文件,就说明那个logo被编译进了 kernel。标准的224色logo是logo_linux_clut224.ppm,因此修改这个图片就可以实现修改logo了。
在 windows下,可以用PaintShopProX直接打开ppm进行编辑,编辑完毕后用decrease color depth命令降为224色,然后保存,把logo_linux_clut224.c删掉,重新make就可以了。这个是我昨晚随便改的logo :
在 深入一点点。很容易发现,对于一般的vga console,logo是由drivers/video/fbmem.c里的fb_show_logo()函数显示的,这个函数的调用者是 drivers/video/console/fbcon.c(跟2.4差不多,嗯)。这个函数做的事情不多,就是先把非8位色深的位图转换为8位色深, 然后用info->fbops->fb_imageblit(info,& image);把logo显示出来,有一个cpu时显示一个logo,有2个cpu时显示2个,以此类推。
略加修改,就可以实现将logo居中显示,并加入一个“重复显示右边界”,也就是把logo最右边4个点宽的区域作为背景填充到整个logo bar。diff如下:
--- /gs2e/source/linux26-2edev/drivers/video/fbmem.c2006-08-29 14:07:15.000000000 +0800
+++ ./fbmem.c2006-09-27 20:40:08.000000000 +0800
@@ -375,9 +375,9 @@
int fb_show_logo(struct fb_info *info)
{
u32 *palette = NULL, *saved_pseudo_palette = NULL;
-unsigned char *logo_new = NULL;
-struct fb_image image;
-int x;
+unsigned char *logo_new = NULL, *border = NULL;
+struct fb_image image, imageborder;
+int x, xoffset;
/* Return if the frame buffer is not mapped or suspended */
if (fb_logo.logo == NULL || info->state != FBINFO_STATE_RUNNING)
@@ -421,12 +421,45 @@
image.height = fb_logo.logo->height;
image.dy = 0;
+#ifdef CONFIG_LOGO_REPEAT_RIGHT
+border = kmalloc(4 * fb_logo.logo->height, GFP_KERNEL);
+if (border != NULL){
+ for (x = 0; x height; x++){ /* use x as y */
+*((u32 *)border + x) = /* will repeat 4 pixels of the right side*/
+*(u32 *)(image.data + (x+1)*fb_logo.logo->width - 4);
+ }
+ imageborder.depth = 8;
+ imageborder.data = border;
+ imageborder.width = 4;
+ imageborder.height = image.height;
+ imageborder.dy = 0;
+ for (x = 0; x var.xres; x+=4){
+imageborder.dx = x;
+info->fbops->fb_imageblit(info, &imageborder);
+ }
+ kfree(border);
+}
+#endif
+#ifndef CONFIG_CENTER_LOGO
+xoffset = 0;
for (x = 0; x width + 8) &&
x var.xres-fb_logo.logo->width; x += (fb_logo.logo->width + 8)) {
image.dx = x;
info->fbops->fb_imageblit(info, &image);
}
-
+#else
+xoffset = (info->var.xres - num_online_cpus() * (fb_logo.logo->width + 8))>>1;
+if (xoffset<0)xoffset = 0;
+ for (x = xoffset; x width + 8) + xoffset &&
+ x var.xres-fb_logo.logo->width+xoffset; x += (fb_logo.logo->width + 8)) {
+ image.dx = x;
+ info->fbops->fb_imageblit(info, &image);
+}
+#endif
kfree(palette);
if (saved_pseudo_palette != NULL)
info->pseudo_palette = saved_pseudo_palette;
我在这里定义了两个配置变量,CONFIG_LOGO_REPEAT_RIGHT和CONFIG_CENTER_LOGO,修改/drivers/video/logo/Kconfig,加上:
config CENTER_LOGO
bool "Center logo"
depends on LOGO
default n
config LOGO_REPEAT_RIGHT
bool "Repeat the right border (4 pixels)"
depends on LOGO
default n
这样就可以在make menuconfig之类的界面中设置是否开启这两项功能了。
守护甜心里的人物的关系??
首先,重要的是女主:亚梦 2个男主:唯世(王子)和几斗(黑猫)唯世和几斗都喜欢亚梦,亚梦一开始喜欢王子,其实对黑猫也有意思,她自己没察觉到,现在与唯世是情侣关系。守护者:守护者间一般都是好友。亚梦(JOKER):几乎对所有主要男生都有好感,特别喜欢的是唯世和几斗,跟唯世是恋人。但也很紧张几斗。(没办法,谁让她是女主..不到结局不做选择...)唯世(K)跟亚梦是恋人,是几斗、歌呗的弟弟(非亲生),跟几斗间有不知原因的矛盾璃茉(Q):跟亚梦是好友,很喜欢亚梦,为此吃抚子的醋,无恋人。抚子/凪彦(前任Q现任J)凪彦其实是男的,喜欢亚梦。女装扮相的抚子是亚梦的知心好友。亚梦并不知道他们是同一个人。弥耶(A) 跟亚梦是好友,无恋人。海里(前任J):喜欢亚梦,走的时候跟她告白了,说我会成为配得上你的男人然后回来...空海(前前任J):升上初中部,有时会来帮忙,喜欢的女生叫诗音,出现过一集,是他的青梅竹马,两人并没有在一起。非守护者:几斗:复活社成员(被逼的),喜欢亚梦,常常调戏(…)、帮助亚梦。是歌呗的亲哥哥。歌呗:歌星,超喜欢几斗(乱伦……),几斗只当她妹妹。跟亚梦是好友,但也视亚梦为情敌。露露:跟亚梦是好友,无恋人。一个圆头圆脑的小男孩(忘记名字了..囧):被亚梦救过,视亚梦为偶像。 附关系图
新手如何学习Linux?
学习Linux步骤:1、先了解了解基础吧,找一本薄一点的,浅一点的书,了解一下什么是linux。有个基本了解即可。不建议马上看《鸟哥的Linux私房菜》,这本书很不错,如果你了解linux基础之后再看,对你可以说是不受益匪浅都不行。没基础看《鸟哥的Linux私房菜》比较痛苦,内容很多。2、了解之后,在自己电脑上弄个虚拟机,装上linux系统(redhat或ubuntu都行)。专攻《鸟哥的Linux私房菜》。当你把这本书攻下来时,才知道原来命令行并不可怕,自己打着打着就很长啦。学linux最主要靠实践,不实践,只看书对你没好处的哦。自己在虚拟机上慢慢玩吧,玩多了就知道咋回事啦。不懂的多找资料弄懂,弄懂之后再实践,这才会有收获。
新手如何有效学习linux?
Linux主体分为“运维”与“开发”两个方向,无论你是Linux相关从业者,还是说爱好都可以归类到这里,其中“运维”一般是初学者或者转行人员的首选,而Linux运维主要是对服务器稳定、性能与安全方面的维护和调试。实际上Linux入门并不困难,只要具备Linux基础,读懂Linux的命令格式,大多数的服务架构都是可以按照文档部署出来。当然做Linux开发,个人建议去参加培训学习更有效率,如果报班学习则大概需要4-6个月时间。学习主要内容有:1)网络基础与linux系统的管理2)优化及高可用技能3)虚拟化与云平台技术4)开发运维毕业后可从事的工作有:1)Linux运维工程师2)数据库工程师3)云计算运维工程师4)自动化运维工程师5)云计算架构工程师等互联网行业目前还是最热门的行业之一,学习IT技能之后足够优秀是有机会进入腾讯、阿里、网易等互联网大厂高薪就业的,发展前景非常好,普通人也可以学习。想要系统学习,你可以考察对比一下开设有相关专业的热门学校,好的学校拥有根据当下企业需求自主研发课程的能力,能够在校期间取得大专或本科学历,中博软件学院、南京课工场、南京北大青鸟等开设相关专业的学校都是不错的,建议实地考察对比一下。祝你学有所成,望采纳。
双柏虎文化节作文500字双柏虎笙节
彝族崇拜虎,自诩是虎的民族、虎的后代。彝人以为世间的万物,都是虎死了以后化成的。虎头化天头,虎尾化地尾,虎皮化地皮,虎血化奔腾的江河湖海,左眼化太阳,右眼化月亮,硬毛化森林,软毛化青草,肌肉化肥沃的土地,骨头化连绵起伏的山梁。虎神是万物之神,是彝人共同的祖先。“跳虎节”就是接虎祖的魂回来和彝人一起过年。
请问谁知道呦蓝CEO彭迪的微信号啊?pp号也行!!拜托拜托啦!!!!!!!!!!谢谢你们了!!!!
八区我带呢啊啊啊啊啊啊啊啊啊啊可利索大姑爷啊呸阿鲁特呢啊立普妥妥的那个女的是谁啊啊吧你怎么样的啊啊啊啊啊啊啊啊啊啊啊啊例如咋啊就我阿克苏也立普妥我才去我带去呢进群比如也比乳液阿婆额阿葵普通墨迹呢你也可以很强势哦哦好的好的好的好的好的好的,谢谢谢谢你怎么样的生活中的吗丁啉才去呢大裤头也阿克苏特么才是去找我带葡萄我饿吃去我饿啦阿克苏特么比如我发顾我此群呢就去找你聊天的人都可以很强势哦我现在没有人人人人人都可以很强势啊啊啊啊啊啊啊啊啊啊啊啊啊此群非让我拜托大将军大姑我饿啊吃葡萄哦大家去听我打趣我阿克苏我饿了!八区我带呢啊啊啊啊啊啊啊啊啊啊可利索大姑爷啊呸阿鲁特呢啊立普妥妥的那个女的是谁啊啊吧你怎么样的啊啊啊啊啊啊啊啊啊啊啊啊例如咋啊就我阿克苏也立普妥我才去我带去呢进群比如也比乳液阿婆额阿葵普通墨迹呢你也可以很强势哦哦好的好的好的好的好的好的,谢谢谢谢你怎么样的生活中的吗丁啉才去呢大裤头也阿克苏特么才是去找我带葡萄我饿吃去我饿啦阿克苏特么比如我发顾我此群呢就去找你聊天的人都可以很强势哦我现在没有人人人人人都可以很强势啊啊啊啊啊啊啊啊啊啊啊啊啊此群非让我拜托大将军大姑我饿啊吃葡萄哦大家去听我打趣我阿克苏我饿了!