嵌入式学习书籍有哪些?

嵌入式学习书籍有哪些?,第1张

以下是华清远见·星创客嵌入式精英训练营提供的学习嵌入式必看的100本书:

001《大话数据结构》

002《鸟哥的 linux 私房菜》

003《疯狂 android 讲义》

004《第一行代码》

005《linux 内核设计与实现》

006《驱动设计开发》

007《linux 内核解密》

008《unix 环境高级编程

009《linux 内核设计与实现》

010《essential C++》

011《嵌入式 linux》

012《linux 设备驱动》

013《c 语言深度解剖》

014《linux 下的 c编程》

015《C Primer Plus(第五版)》

016《ARM 体系结构与编程(第二版)》

017《lINUX 设备驱动开发详解(第三版)》

018《android 开发艺术探讨》

019《c++plus》

020《Unix 环境高级编程》

021《与大数据同行——学习和教育的未来》

022《用户体验的要素》

023《编程与艺术》

024《ARM 嵌入式体系结构与接口技术》

025《cortex-m0 接口编程》

026《C 语言程序设计:现代方法》

027《C++ Primer》

028《数据结构》(严蔚敏)

029《算法导论》

030《Linux 设备驱动开发》

031《代码大全》

032《深入理解计算机系统》

033《UNIX 环境高级编程》

034《计算机安全原理》

035《UNIX 网络编程》

036《HeadFirst 设计模式》

037《linux 驱动》(宋保华)

038《C++ primer4》

039《qt5 精彩实例》

040《ldd3》

041《C++高级编程》

042《C语言教程》

043《实战 linux 编程精髓》

044《ARM 教程》

045《JAVA 编程思想》

046《HTML+CSS 网页设计与布局从入门到精通》

047《C 语言深度解剖》

048《深度实践嵌入式 Linux 系统移植》

049《unix 高级编程》

050《c 嵌入式一站式教学》

051《编译原理》

052《深度实践嵌入式 Linux 系统移植》

053《UNIX 环境高级编程》

054《linux 网络编程》

055《C 语言程序设计》

056《unix 环境高级编程》

057《嵌入式 linuxc 语言程序设计基础教程》

058《Java 编程思想》

059《TCP/IP 详解》

060《linux 技术手册》

061《C 语言深度剖析》

062《Unix 高级环境编程》

063《C++primerplus》

064《QT》

065《C 程序设计》

066《C 和指针》

067《C++primer》

068《C 程序设计语言》

069《ProgrammingC#》

070《thinking in C++》

071《Linux Device driver》

072《Linux kernel development》

073《软件工程》

074《C 和指针》

075《Android 核心代码》

076《Android 技术内幕》

077《Android 底层移植》

078《Unix 编程手册(上下卷)》

079《Linux 驱动设计第三版》

080《ARM 实战开发》

081《unix 环境高级编程》

082《tcp/ip 编程详解》

083《Linux 网络编程》

084《Unix 编程艺术》

085《计算机程序的构造和解释》

086《C Primer plus》

087《LINUX 权威指南》

088《LINUX 设备驱动程序》

089《The C Programming Language》

090《ajax 高级程序设计》

091《angula js 权威教程》

092《ARM 体系结构》

093《Unix 环境高级编程》

094《Linux 设备驱动程序》

095《现代 *** 作系统》

096《TCP/IP 协议详解》

097《嵌入式 C 语言设计模式》

098《Struts In Action》

099《c 程序设计语言(第二版)》

100《深入理解 Linux 内核(第三版)》

这段时间新冠肺炎疫情又波及了好几个省,下个星期又要在家办公了,哪都不能去了。不过话说回来,在城里面本来也就没什么好玩的,也没什么地方好去的。

接着上一次的内容,要从网络加载内核和设备树,以及挂载网络根文件系统,需要在UBoot里面设置 bootcmd 和 bootargs 两个环境变量如下:

set bootcmd 'tftp 41000000 uImagetftp 42000000 exynos4412-fs4412.dtbbootm 41000000 - 42000000'

set bootargs 'console=ttySAC2,115200 root=/dev/nfs rw nfsroot=192.168.1.8:/samba/nfs/rootfs,proto=tcp clk_ignore_unused /init=/linuxrc ip=192.168.1.100:192.168.1.8:192.168.1.1:255.255.255.0'

这两个参数需要根据自己的实际情况加以调整,主要是nfs和ip的一些设置。

bootcmd 是内核启动命令,其表示使用tftp协议,从TFTP文件夹下加载uImage到41000000的内存地址。然后从TFTP文件夹下加载exynos4412-fs4412.dtb到42000000的内存地址,然后执行bootm命令,从41000000的地址启动内核。

bootargs 是内核启动的参数,比如设置控制台的串口参数,指定根文件系统(这里我们使用nfs从网络上挂载根文件系统,注意协议用tcp,如果用udp的话,很可能会因为丢包而导致挂载失败)

最后需要saveenv保存设置。

就绪之后,板子重新上电,不要回车打断UBoot,让其引导Linux内核启动,结果内核启动失败。

后来在群里问了老师,他们发了内核镜像和设备树过来,让我用他们编译的试试,我一试,还真能用。本来我还怀疑是不是根文件系统的问题,后来老师让我看看设备树,说是要注释掉下面这一段。

但是我一看,本来就是注释掉的啊。。。然后就无解了,我以为可能还是根文件系统的问题,群里问老师也没有再回,就搁置了两天,这也算是中间的一个小插曲吧。然后我刚刚又在群里问,另一个老师说这一段现在不需要注释了,就是要加进来。然后我就把注释去掉了,重新编译后,果然就可以启动了。

可以看到根文件系统已经挂载成功了,那这样我们的环境搭建部分就测试OK了,我们得到了一份可以在4412板子上运行的Linux内核源码,UBoot源码和根文件系统。

所以呢,感觉培训机构的资料管理挺乱的,各个老师之间的信息不同步,资料也不同步,视频可能是很老的,配套资料也过时了,你不问还不知道,这可能也是他们需要建立大量的群来答疑的原因吧,总之,体验不佳。当然他们觉得这些步骤你不需要做啊,直接用现成的虚拟机镜像就可以了嘛,编译工具链,各种依赖库,环境变量那些都给你搞好了,干嘛要自己搞。他们这种想法就只适合那些初学驱动的人,确实,如果你只想学习驱动,那确实用他们准备好的虚拟机镜像就可以了。但是如果我要换一个芯片,环境还得自己搭,那就不好使了,或者说我自己已经有虚拟机了,再搞一个镜像其实显得很累赘。

好了,今天就到这里了,后面就开始UBoot的移植学习。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/9031670.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-24
下一篇 2023-04-24

发表评论

登录后才能评论

评论列表(0条)

保存