2018-12-05 22:33:00 qq_41068712 阅读数 491
  • Android底层技术:HAL驱动开发

    本课程提供开发者学习Android底层的HAL(硬件抽象层)的开发方法和技术。HAL所在的位置是介于Android系统服务与Linux内核之间,HAL Driver是以library形式出现,给HAL Stub调用,供Android System架构者调用。而HAL Stub则是google设计出来的,保护硬件厂商的硬件驱动。

    17819 人正在学习 去看看 高煥堂

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

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

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

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

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

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

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

posted @ 2018-12-05 22:33 一直走向深渊的迷途羔羊 阅读(...) 评论(...) 编辑 收藏
2018-10-16 19:00:29 qq_33926505 阅读数 1473
  • Android底层技术:HAL驱动开发

    本课程提供开发者学习Android底层的HAL(硬件抽象层)的开发方法和技术。HAL所在的位置是介于Android系统服务与Linux内核之间,HAL Driver是以library形式出现,给HAL Stub调用,供Android System架构者调用。而HAL Stub则是google设计出来的,保护硬件厂商的硬件驱动。

    17819 人正在学习 去看看 高煥堂

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一起刷入开发板 则可解决覆盖不了的问题

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

2018-01-07 12:11:35 qiuzhizhecsd 阅读数 7054
  • Android底层技术:HAL驱动开发

    本课程提供开发者学习Android底层的HAL(硬件抽象层)的开发方法和技术。HAL所在的位置是介于Android系统服务与Linux内核之间,HAL Driver是以library形式出现,给HAL Stub调用,供Android System架构者调用。而HAL Stub则是google设计出来的,保护硬件厂商的硬件驱动。

    17819 人正在学习 去看看 高煥堂

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

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

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

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


2013-12-06 09:58:00 duhaomin 阅读数 1010
  • Android底层技术:HAL驱动开发

    本课程提供开发者学习Android底层的HAL(硬件抽象层)的开发方法和技术。HAL所在的位置是介于Android系统服务与Linux内核之间,HAL Driver是以library形式出现,给HAL Stub调用,供Android System架构者调用。而HAL Stub则是google设计出来的,保护硬件厂商的硬件驱动。

    17819 人正在学习 去看看 高煥堂

点击下载XueTr0.39

这个是XP版本的,而据我所知,这个软件是个人开发,不是商业开发,也是作为练习学习而边学边开发的,所以大家就不要要求跟商业破解版那样,毕竟人家不要钱,Win732位的也有,可以自己找一下,使用它,可以找到软件被谁钩住,进程,内核模块,注册表信息,DPC定时器等等很棒的功能,研究底层、驱动、内核之类的朋友一定会喜欢的。

 

2019-05-03 12:29:00 uhgrft4645 阅读数 73
  • Android底层技术:HAL驱动开发

    本课程提供开发者学习Android底层的HAL(硬件抽象层)的开发方法和技术。HAL所在的位置是介于Android系统服务与Linux内核之间,HAL Driver是以library形式出现,给HAL Stub调用,供Android System架构者调用。而HAL Stub则是google设计出来的,保护硬件厂商的硬件驱动。

    17819 人正在学习 去看看 高煥堂

c语言主要用于底层和驱动,编译器开发

c语言高效底层,主要用于底层的开发,比如一些系统驱动;unix,linux系统和其上相关应用的开发;

有很多语言比如python、php、perl、ruby等都c语言开发的这些语言的核心库,编译器等开发都是c语言。比如鸟哥的php7的开发,就基本上全是c语言了,据说鸟哥在新浪的时候就成功把新浪的php码农都带成了c码农。

还有就是如果某些应用如果对性能要求严格,那这部分可以用c写,然后高级语言调用。

c++底层、图像处理、游戏

c++主要写一些底层比如windows,office,web浏览器等很多都是c++写的。

还有就是图像处理和识别等都是c++。

大型的游戏引擎等都是c++开发的,比如大家都玩过的暴雪的游戏基本上都是c++开发的。

javaweb,系统,大数据

java用处就大了,笔者之前很多回答都提到过。

很多大型网站都是java开发,比如淘宝、京东。

很多系统级别开发也用了java,比如数学统计工具matlab。

Java在大数据、分布式计算方面基本上是一枝独秀,比如hadoop、HBase、Accumulo以及ELK中的ElasticSearch、支持最大吞吐量的消息队列Kafka以及其他大数据处理技术很多都是用Java以及基于java的scala。

java设计初衷就是为了小硬件系统而生,所以将来物联网和智能家电等小系统少不了它。

javascript前端,基于node.js一些后端

js主要就是web前端用处,比如基本上所有语言都用的jquery,anguage,vue,还有现在层出不穷的新项目,新轮子。世界变化太快,眼太花,更不上了。

js在后端上基于v8引擎的node.js高性能的语言,现在也很多人在用。

js现在很火,岗位很多,出来java外就js最多了

如果你准备了解大数据开发或是正在学习大数据开发,欢迎加入我们的大数据学习q群378144993,群里365天每天与大家分享免费的学习教程以及开发工具,你与大咖就差这个圈.

phpweb开发

php主要是web开发,基本上互联网上绝大多数网站都是php开发的。下面是W3Techs最新的Web开发语言统计,php占了83.2%:

pyton小脚本,数值算法,云开发,ai接入

python是能快捷入门的小能手,适合随手写一些解决问题的小脚本。

用户django写写web小应用,结合ansible,saltstack做devops运维自动化工具。这方面也很火,需求量大。

python在数值计算,ai方面也很火,基本上ai系统都提供python的接口,写个人工智能应用很方便。

在云方面,基于openstack的私有云开发也是一个很火,很重要的方向。

ruby主要是ror的web开发

ruby主要是快速迭代开发,作为初创企业用非常方便。基于ror(rubyonrails)有大量的项目,比如大家都知道git服务端,github,gitlab。

自动化和devops方面有Chef、Puppet。

安全方面有rapid7公司的安全渗透平台巨无霸Metasploit。

人工智能、大数据、云计算和物联网的未来发展值得重视,均为前沿产业,多智时代专注于人工智能和大数据的入门和科谱,在此为你推荐几篇优质好文:
洞见未来:人工智能开发的5种最佳编程语言选择
http://www.duozhishidai.com/article-12305-1.html
适用于人工智能场景的五大编程语言
http://www.duozhishidai.com/article-5530-1.html
入行人工智能机器人研发,选择哪一种机器人编程语言比较好?
http://www.duozhishidai.com/article-2460-1.html

多智时代-人工智能和大数据学习入门网站|人工智能、大数据、物联网、云计算的学习交流网站


--------------------- 
 

没有更多推荐了,返回首页