关系经济人类预测化学自然
中准网
自然科学
知识物理
化学生物
地理解释
预测理解
本质社会
人类现象
行为研究
经济政治
心理结构
关系指导
人文遗产

一位年经验的底层开发程序员教你如何入门

4月12日 听雨眠投稿
  师傅领进门,修行在个人。Github上一位拥有10年底层开发经验的老程序员gurugio,整理了一套适合嵌入式或底层开发(LowLevelProgramming)的程序员入门指导。来帮助众多的初学者成为一名初级的底层开发程序员和Linux内核工程师。
  他在底层开发拥有超过10年的从业经验,一直从事以下的工作:
  80x86汇编编程
  硬件设备与Atmel芯片和固件
  Unix的C语言系统编程
  Linux中的设备驱动程序
  Linux内核:页面分配
  Linux内核:块设备驱动和md模块
  一、什么是底层开发?
  底层开发是非常接近机器的编程,使用底层开发语言(如C或汇编)。这与使用高级语言(例如Python,Java)的程序员进行编程不同。
  维基百科:底层开发
  系统编程与底层开发的一个非常接近的概念。该页面包括系统编程中未包含的硬件设计和固件开发。
  维基百科:系统编程
  系统编程包括从硬件组件到Linux内核的内容。这里你能通过文档落得理论基础,但一页文档永远不会覆盖所有层的细节,因此本文档的目的是作为底层开发的起点。
  二、理论
  底层开发有两个背景理论:
  计算机体系结构
  操作系统
  可以在网上找到很多好的课程,例如Coursera。org和edx。org。理论是理论,只需了解课堂上的内容大纲,打好理论基础。
  三、编程语言
  1。部件
  8086汇编编程与emu8086包涵:
  CPU和计算机体系结构的基本概念
  C编程语言的基本概念
  64位汇编程序包涵:
  现代CPU和计算机架构的基本概念
  C代码的拆解和调试的基本概念
  2。C语言
  没有捷径。只能阅读以下书籍并解决所有的练习。
  C编程:现代方法第2版
  C编程语言第2版
  现代C:对于C的新标准
  并行编程困难,如果是这样,你能做什么呢?
  原始实现与C同步,大规模C编程(特别是内核编程)的基本要素
  C编程挑战?
  计划像Eudyptula挑战赛的任务
  你的想法和思路
  如果你可以完成该页面中的所有小项目,那么你将能够尝试大型项目。
  四、应用
  1。硬件固件
  如果想成为嵌入式系统工程师,最好从简单的硬件套件开始,而不是从最新的ARM芯片组开始。
  2。Arduino启动套件
  有各种系列的Arduino,但Arduino启动工具有最简单的处理器(Atmega328P)和指导书
  Atmega328P具有8位内核,开始数字电路设计和Firware开发。
  你不需要知道如何绘制原理图和布局,并组装芯片。
  但是需要知道如何阅读原理图并了解芯片的连接方式。
  固件开发人员应该能够阅读原理图,并找出如何将数据发送到目标设备。
  按照指导书!
  3。8086手册
  如果是x86架构的初学者,8086也是处理器架构和80x86程序集的非常好的指南
  4。80386手册
  80x86处理器的保护模式和寻呼机制的最佳指南
  网页版本:https:pdos。csail。mit。edu6。8282011readingsi386toc。htm
  在这些基础之上,你可以开始接触ARM或x86处理器。
  https:www。raspberrypi。org
  https:beagleboard。org
  https:www。arduino。ccenArduinoCertifiedIntelEdison
  例如,RaspberryPi板具有支持64位指令集的CortexA53处理器。这允许你体验具有rPi的现代处理器架构。是的,你可以买它,但是你要怎么做?如果你没有目标项目,可能会将该板放入抽屉中,并将其忘记。
  所以,我为你推荐一个项目。
  制作自己的内核
  参考资料:https:www。reddit。comrosdev
  我制作了一个支持64位长模式,分页和非常简单的上下文切换的toy内核。制作toy内核是了解现代计算机架构和硬件控制的好方法。
  实际上,你已经有最新的处理器和最新的硬件设备。你的笔记本电脑!你的桌面!你已经有了所有的开始!你不需要买任何东西。qemu仿真器可以模拟最新的ARM处理器和Intel处理器。所以你需要的一切已经在手。有很多toy内核和文件可以参考。只需安装qemu模拟器,并制作一个小型内核,只需启动并打开分页,并打印一些消息。
  其他toy内核:
  https:littleosbook。github。io
  https:tuhdo。github。ioos01
  五、Linux内核和设备驱动
  不需要制作完整的操作系统。加入Linux社区并参与开发。
  阅读以下书籍:
  《Unix操作系统的设计》:Unix的基本概念适用于所有操作系统。很好的了解操作系统的概念。
  《Linux设备驱动程序》:做所有的用例。
  《Linux内核开发》:了解Linux内核的设计。
  《了解Linux内核》:阅读本书,了解内核源码v2。6
  使用qemu和gdb逐行运行内核源代码
  http:stackoverflow。comquestions11408041howtodebugthelinuxkernelwithgdbandqemu
  https:gurugio。kldp。netwikiwiki。phphowtodebugkernel
  使用busybox来做最简单的文件系统,只需要1秒钟即可引导
  https:gurugio。kldp。netwikiwiki。phpqemukernel
  Eudyptula挑战赛
  这就像一个非常棒的私人老师,指导你做什么。
  块层和设备驱动程序(还在整理中)
  Linux内核的md驱动程序(正在进行中)
  mdadm工具如何工作以及如何调用md驱动程序
  md驱动程序的工作原理
  参考文献
  检查什么时候需要什么
  自由电子主页(Freeelectronshomepage):许多幻灯片文件引入了很好的话题,特别是ARMlinux
  朱莉娅埃文斯的发布:你可以是一个内核黑客!:指导启动内核编程。
  六、未来的底层开发
  我不知道未来,但我注意到了RUST。如果有一个星期的空余时间,我会学习RUST。因为RUST是可以开发Linux设备驱动程序的最新语言。
  IoT是新的趋势,所以值得检查什么操作系统可满足IoT开发。ARM,三星和一些公司都有自己的操作系统,但可获得的资料太少了。但Linux基金会提供了一个解决方案:Zephyr
  典型的云服务器有很多层次,例如主机操作系统,kvm驱动程序,qemu进程,客户操作系统和服务应用程序。因此,容器已经开发出来提供轻型虚拟化。在不久的将来,一个新的OS概念,即所谓的库OS或Unikernel,将替代虚拟化的典型的SW堆栈。
  获得本文提到的所有Github库资源,请访问https:github。comgurugiolowlevelprogramminguniversitylinuxkernelanddevicedriver
投诉 评论 转载

渑池之会蔺相如在渑池之会中起到了什么作用渑池之会是发生在战国时期的一次交锋,虽然这一次所谓的友好会见并没有发生什么流血事件,但是在整个事件的过程中的紧张程度却不逊色于任何一场战争。那么参加了渑池之会的人物有哪些呢?……梁姓男孩起名洋气点梁姓男孩起名宝典根据之前在线上做的小调查,发现部分姓梁的家长在给自家男孩起名时,都希望名字可以洋气点。那为了满足大家的要求,我们这次就准备了部分合适的姓名,希望这里面能有你喜欢的选项。要是有时……小米电视在印度发布约售元起【宅秘新闻】像此前官方宣布的那样,9月7日,小米电视4AHorizonEdition在印度市场推出,这是Horizon品牌下的第一款电视,有32英寸、43英寸两种尺寸可选。……你是谁的天使她不是个漂亮的女子,软弱,刁蛮,爱使小性儿,花钱大手大脚。岁之前,她一直是这样无拘无束随心所欲地生活着,直到遇上他。他岁,正是男人最好的年龄,事业小有成就,既成熟稳健,又温文尔……靠谱的男人有哪些细节男人靠不靠谱就看这四个细节一、守时靠谱之人,首先会守时。守时,代表了对约定的重视,对时间的珍视,以及对约定时间所要做的事情的重视,是职业道德的基本要求,也是对自己信誉负责的表现。他们会把自己的生活……手淫后睾丸痛是怎么回事很多男人都有手淫的习惯,那么手淫过度会导致睾丸不良吗?下面我们就来看一下。睾丸扭转是男性常见的疾病之一,它给男性带来很大的伤害,手淫是导致睾丸扭转的病因之一,随着男女比例……龙眼种植的保果技术龙眼在扬花至幼果期,往往由于各种原因造成落花落果,损失惨重。龙眼种植的保果技术具体是怎样的呢?龙眼果实发育全过程有三次生理落果高峰期:第一次在雌花谢后714天,幼果……秋燥来袭家中必备这些止咳药专家提醒,岁已入秋,秋风秋雨袭人面,备好秋季家庭小药箱,可有备而无患。首先应检查一下家中的药箱,药品是否过期,其次要根据季节,对药箱中的药品进行更新。一般来说,秋日药箱可……横店影视城在什么地方横店影视城的门票价格多少钱横店影视城是中国知名的影视拍摄基地,有着中国好莱坞的美誉,这里有着很大规模的仿古建筑,秦王宫、清明上河图、明清宫苑等景点都模范的惟妙惟肖,中国有很多影视剧是在那拍摄完成的。那横……养死杜鹃花的五种原因杜鹃花被养死可能是光照不足,要提供6小时以上阳光;肥多烧根要将浓肥稀释,平常薄肥勤施;积水导致其烂根死亡,要控水见干见湿进行浇水;生长空间狭小使其根系不能舒展,要及时换盆;通风……闲鱼转转一份关于二手物品交易的竞品分析报告Q:58同城上线了转转这款二手物品的APP,假设你是淘宝旗下二手物品APP闲鱼的产品经理,做一份针对转转的竞品分析报告。【注】分析体验系统环境:闲鱼:手机系统……一位年经验的底层开发程序员教你如何入门师傅领进门,修行在个人。Github上一位拥有10年底层开发经验的老程序员gurugio,整理了一套适合嵌入式或底层开发(LowLevelProgramming)的程序员入门指……
惰性细胞淋巴瘤要如何饮食上班族减肥十个动作帮你燃脂瘦身这三种类型的人不适合喝蜂蜜公安部交管局有关负责人解读临时入境机动车和驾驶人女孩青春期都会变坏吗汽车刹车系统的保养周期黄曲霉毒素的特点是什么防辐射孕妇装怎么穿孕期贫血判断标准小儿麻痹症初期症状油罐车超载如何处罚逆向行驶有几种情况
公安人员违法办案追责的主要内容你好,李焕英火了,却因离全球最高票房一步之遥被网友喷幼儿智力开发游戏重温裸婚时代刘易阳这样的男人,我劝你别嫁听说姚明能压制力量型的霍华德却打不过布泽尔是真的吗?为什么?办公租赁合同饭店服务员辱骂顾客投诉途径有哪些自然乐园眼影盘好用么云吞和馄饨是同一种东西吗馄饨和云吞的区别天堂的律师生活知识科普万圣节是几月几日学生会礼仪部工作总结

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找菏泽德阳山西湖州宝鸡上海茂名内江三亚信阳长春北海西安安徽黄石烟台沧州湛江肇庆鹤壁六安韶关成都钦州