底层软件驱动开发_底层开发和驱动开发 - CSDN
  • 什么是底层驱动程序

    2017-10-20 12:28:56
    底层驱动是程序以访问底层硬件的形式实现人机交互,驱动程序和应用程序之间需要实现相应的信息交互,一方面,应用程序通过对驱动程序发送相应的指令,实现 硬件控制的动作指令,另一方面,驱动程序将硬件读写的状态...
    底层驱动是程序以访问底层硬件的形式实现人机交互,驱动程序和应用程序之间需要实现相应的信息交互,一方面,应用程序通过对驱动程序发送相应的指令,实现
     硬件控制的动作指令,另一方面,驱动程序将硬件读写的状态、从硬件上获得的数据传送给应用程序,实现应用程序与驱动程序间的交互。
    
    展开全文
  • 嵌入式入门学习笔记4:[转]什么是嵌入式底层驱动开发和嵌入式底层软件开发 我们知道嵌入式操作系统(Embedded System)是指以应用为中心、以计算机技术为基础,软件硬件可裁剪、适应应用系统对功能、...

    嵌入式入门学习笔记4:[转]什么是嵌入式底层驱动开发和嵌入式底层软件开发

    我们知道嵌入式操作系统(Embedded System)是指以应用为中心、以计算机技术为基础,软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式开发分两种,一种是硬件开发,一种是软件开发。简单来说,嵌入式底层驱动开发就是针对嵌入式操作系统的一些设备编写驱动程序。而嵌入式底层软件开发就是进行嵌入式操作系统和应用软件的开发,我们具体来看下。

    嵌入式系统是软硬结合的东西,搞嵌入式开发的人有两类:

    一类是学电子工程、通信工程等偏硬件专业出身的人

    他们主要是搞硬件设计,有时要开发一些与硬件关系密切的底层软件,如BootLoaderBoard Support Package(PCBIOS一样.往下驱动硬件.往上支持操作系统)、初级的硬件驱动程序等。他们的优势是对硬件原理非常清楚,不足是他们更擅长定义各种硬件接口,但对复杂软件系统往往力不从心(例如嵌入式操作系统原理和复杂应用软件等)他们所从事的工作就是我们常说的嵌入式底层驱动开发。

    另一类是学软件、计算机专业出身的人

    他们主要从事嵌入式操作系统和应用软件的开发,当然如果学软件的人对硬件原理和接口有较好的掌握,也完全可以写BSP和硬件驱动程序。嵌入式硬件设计完后,各种功能就全靠软件来实现了。嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的主要工作(目前有很多公司将硬件设计包给了专门的硬件公司稍复杂的硬件都交给台湾或国外公司设计。的硬件设计力量很弱,很多嵌入式公司自己只负责开发软件,因为公司都知道,嵌入式产品的差异很大程度在软件上。所以我们搞软件的人完全不用担心我们在嵌入式市场上的用武之地,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。

    posted @ 2018-12-05 22:33 一直走向深渊的迷途羔羊 阅读(...) 评论(...) 编辑 收藏
    展开全文
  • Android底层驱动开发 -驱动配置篇## 所需要的硬件及软件资源 一块Android开发板(我用的是Firefly-AIO-3288J) 开发板的系统源码 一台运行Linux系统的主机(虚拟机也行,但内存配置不要低于16g,否则会编译失败) 准备...

    Android底层驱动开发 -驱动配置篇##

    所需要的硬件及软件资源

    1. 一块Android开发板(我用的是Firefly-AIO-3288J)
    2. 开发板的系统源码
    3. 一台运行Linux系统的主机(虚拟机也行,但内存配置不要低于16g,否则会编译失败)

    准备工作

    1. 在Linux系统上面安装好JDK
    2. 下载系统源码至Linux主机上面,然后解压
    tar xzf /data/Android/xxxx.tar.gz
    git reset --hard
    
    1. 尝试单独编译内核模块
    make firefly_defconfig
    make firefly-rk3288-aio-3288j.img -j4
    

    如该编译成功则进行下一步

    开始编写驱动

    这里以编写HX711 AD模块的驱动为例

    1. 增加所需的资源到设备树dts文件里面,dts文件在
    /kernel/arch/arm/boot/dts/firefly-rk3288-aio-3288j.dts
    

    在里面增加设备资源定义,配置GPIO管脚

    //电子秤驱动
    	scale_driver{
        	compatible = "scaleDriver";
        	scale-sck = <&gpio1 GPIO_D2 GPIO_ACTIVE_HIGH> ;
        	scale-dt = <&gpio1 GPIO_D0 GPIO_ACTIVE_LOW>;
        	status = "okay";
    	};
    
    1. 新建驱动文件夹,在/kernel/drivers文件夹下面新建scaleDriver文件夹,这个文件夹用来存放驱动程序
    2. 在文件夹里面新建驱动程序文件scaleDriver.c
    3. 在文件夹里面新建Kconfig以及Makefile两个文件,两个文件的内容如下
    //Kconfig
    #  scale driver
    #  author:yinshuai
    #  DATE:2018-08-21
    #  Kconfig
    config SCALE_DRIVER
        bool "scaleDriver"
        default y
        help
            this is scale driver
    
    //Makefile
    #  scale driver
    #  author:yinshuai
    #  DATE:2018-08-21
    obj-$(CONFIG_SCALE_DRIVER) +=scaleDrive.o
    
    1. 在drivers文件夹下面的Kconfig以及Makefile两个文件中添加以下内容
    //Kconfig
    source "drivers/scaleDriver/Kconfig"
    
    //Makefile
    obj-y	+= scaleDriver/
    

    配置驱动

    1. 进入图形化配置界面
    make menuconfig
    

    选择Device Drivers —> 然后在自己的驱动前面打上星号,保存退出

    编译内核

    开始编译内核,执行以下命令

    make firefly_defconfig
    make firefly-rk3288-aio-3288j.img -j4
    

    最后生成的内核文件在

    /kernel   kernel.img
    /kernel   resource.img
    

    如果发现刷入的内核覆盖不了之前的内核 执行以下命令重新生成boot.img

    make bootimage
    

    生成的boot.img文件在

    out/target/product/rk3288_aio_3288j_box/boot.img
    

    最后把boot.img 以及 kernel.img 和 resource.img一起刷入开发板 则可解决覆盖不了的问题

    个人博客地址:小白的个人博客

    展开全文
  • 在这里makekam对底层软件的理解就是指驱动开发,代码移植等工作。其中也包括底层的算法。在小公司做软件不要做底层软件开发,犹如在公司做硬件开发不要只是焊接电路板。  小公司处于产业链的最末端,没有自己的...

            在这里makekam对底层软件的理解就是指驱动开发,代码移植等工作。其中也包括底层的算法。在小公司做软件不要做底层软件开发,犹如在公司做硬件开发不要只是焊接电路板。
            小公司处于产业链的最末端,没有自己的核心技术,只是针对用户需求完成一些系统集成和定制。而核心技术具有普遍适用性如“组合导航技术”、“操作系统移植与软件框架”等技术并不局限于某个领域,这些技术大公司可以集中力量突破,然后将技术卖给各个小公司。所以普遍适用性的技术往往来自大公司。因此,小公司的底层软件要么是测试供应商的软硬件产品,然后与供应商沟通测出的问题,要么是让自己公司的代码匹配供应商的产品,比如驱动开发、代码移植等。这些工作往往代码量奇少无比,体现不出高级程序员和低级程序员的区别,因为做这些事主要是看外设文档,与供应商沟通。只要花费人和时间,这些事情都能完成。

            除此之外,做底层开发还要替硬件填坑背锅。小公司缺少硬件测试流程,问题往往在产品运行时才能发现。假设makekam是做底层软件开发的,当做硬件的人焊接的板子有问题时,这些问题往往无法彻底排除是软件导致的,所以做底层软件的makekam就要花几天时间把底层代码查个遍来分析问题,最后才能让硬件的人用十五分钟解决问题。

            也许你会说,做底层软件做的多了不就积累了很多经验吗?其实不然,只要公司决定出钱购买另一款外围设备,那么之前的经验就很难用得上了。而且底层开发代码量很小,只是匹配主控芯片和外设,哪里有什么创新,哪里有什么复杂度?而且更重要的是,公司的领导心里永远不惦记你,这是因为,公司领导想的都是公司的项目,而这些项目的主要困难是什么?绝不是底层软件开发!底层软件开发只需要人和时间就一定可以完成,这是一个必然事件。而充满不确定性的应用层开发和项目成本估算还有项目需求分析才是这个项目成败的关键。因此,对于领导来说,在项目确定之前需要和三个人沟通,第一是和客户沟通,因为客户决定产品研发方向,第二是和外设供应商沟通,因为只有外设供应商才知道项目的开发平台的属性与成本。第三是和做应用开发的人沟通,因为项目的主要工作量是在应用层。领导不会和做底层软件的人沟通,因为底层软件只是一个桥梁,一个台阶,一个垫脚石。底层软件做的再好,也只不过是把系统做稳定,项目的价值的提升取决于业务目标和应用开发。

            总之,在小公司,面向客户,面向应用才有前途。因为小公司存在的意义就是面向客户整合产业链上游资源。


    展开全文
  • 摘要: 本设计是实现Android底层驱动开发并裁剪定制Android操作系统。其大概流程是在linux系统上借助于gcc编译器编写调试驱动代码,在Android源码中编写APP应用程序、中间件的共享库代码、Android.mk文件、利用javah...
  • 向大家推荐一本书,送给那些想从事嵌入式底层软件开发,却又难于入门的学者,上图: 内容简介 《深入浅出:嵌入式底层软件开发》内容简介:第1篇(第1~3章)以ARM CPU及其汇编语言为背景,深入浅出地讲解软件...
  • 本课程提供开发者学习Android底层的HAL(硬件抽象层)的开发方法和技术。HAL所在的位置是介于Android系统服务与Linux内核之间,HAL Driver是以library形式出现,给HAL Stub调用,供Android System架构者调用。而HAL ...
  • MT6735平台的项目开发,还是有很多人在做的,以下是一牛...包括主板/PCBA,驱动/底层开发,软件/系统,项目开发整包,PCB设计/LATOUT,RF射频调试,音频/视频图像等方案开发 描述: 需要一套量产过的模组,MTK6737/MTK6...
  • 本博实时更新《Linux设备驱动开发详解(第3版)》(即《Linux设备驱动开发详解:基于最新的Linux 4.0内核》)的最新进展。 目前已经完成稿件。 2015年8月9日,china-pub开始上线预售: ... 2015年8月20日,各路朋友报喜...
  • 1、Android 7编程入门经典(第4版) 使用Android Studio 2 PDF 下载 下载地址:...2、Android底层驱动分析和移植 PDF 下载 下载地址:http://www.askwinds.com/r-c/down...
  • Android底层开发步骤
  • 1.确定任务:加快摄像头的信息获取速率:缩减驱动程序、减小帧的大小,缩减一个像素点的比特流(6/8/10bit) 2.重点了解函数:camerabuffer *buffer=mPreviewBufs.keyAt(index) 可做定义int Stride:16(4*4) GET:...
  •  GPIO驱动是Linux驱动开发中最基础、但却是很常用、很重要的驱动。比如你要点亮一个LED灯、键盘扫描、输出高低电平等等。而Linux内核的强大之处在于对最底层的GPIO硬件操作层的基础上封装了一些统一的GPIO操作接口...
  • C语言语法
  • bsp开发之驱动开发

    2014-11-05 22:40:33
    关于bsp开发中的驱动开发的介绍
  • 硬件平台:TI AM335X Starter ... 这次写《Android 从硬件到应用》是想尝试从底层的最简单的GPIO硬件驱动开始,一步一步的向上走,经过硬件抽象层HAL、JNI方法等,最终编写出APP,达到硬件调用的目的,期间会增加一些
  • 作者:李Brooks 链接:... 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 ...------------------------------------------------------------------- ...
  • 嵌入式硬件构件与底层驱动构件基本规范构件化设计嵌入式硬件构件核心构件中间构件终端构件 构件化设计 构件是核心和基础。 复用为必要的手段。 提高软硬件设计可重用性与可移植性。 嵌入式硬件构件 指将一个...
  • 如PDA手机,掌上电脑,在说开点,就是针对硬件做开发,写驱动.. 嵌入式开发。 如PDA手机,掌上电脑,在说开点,就是针对硬件做开发,写驱动.. 这个工资收入 相比于纯WEB开发要高一倍 我给你找个文章吧呵呵. ...
  • ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: (1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9) (2)必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定) (3)必须...
1 2 3 4 5 ... 20
收藏数 83,341
精华内容 33,336
关键字:

底层软件驱动开发