精华内容
下载资源
问答
  • 嵌入式应用层开发要学习什么

    千次阅读 2016-12-20 16:48:22
    如果从应用层的应用开发出发,建议先熟悉API函数,推荐《UNIX环境高级编程》,现在应该是第3版了,如果从应用层的界面开发出发,则建议学习Qt,WinCE或Android等。 但真实的嵌入式开发,熟悉以上还是远远不够的,...
    

                                                

    如果从应用层的应用开发出发,建议先熟悉API函数,推荐《UNIX环境高级编程》,现在应该是第3版了,如果从应用层的界面开发出发,则建议学习Qt,WinCE或Android等。
    但真实的嵌入式开发,熟悉以上还是远远不够的,建议如下学习曲线

    第一节段 熟练使用Linux操作系统
    学习Linux操作系统的概念和安装方法,理解Linux下的基本命令、管理配置和编辑器,包括VI编辑器,GCC编译器,GDB调试器和 Make 项目管理工具等知识。

    第二阶段 精通linux下C语言
    通过大量编程实例重点学习C语言的高级编程知识,包括函数与程序结构、指针、数组、常用算法、库函数的使用等知识,另外,还要学习数据结构的基础内容,包括链表、队列、栈、树、哈希表、图等内容。

    第三阶段 嵌入式Linux应用编程
    精通嵌入式Linux下的程序设计,精通嵌入式Linux开发环境,强化对Linux应用开发的理解和编码调试的能力,包括系统编程、文件I/O、多进程和多线程、网络编程、GUI图形界面编程、数据库。

    第四阶段 嵌入式入门阶段-ARM体系结构
    ARM处理器体系结构、编程环境、指令集、寻址方式、调试、汇编和混合编程。ARM的常用接口开发及硬件电路设计基础(包括IO、串口、看门狗、实时时钟、SPI、IIC、扫描键盘、FLASH操作等),为以后的设备驱动的学习打好基础。

    第五阶段 嵌入式高级阶段-Linux内核和驱动开发
    深入内核细节,了解Linux相关运行机理,为后面的驱动开发打好理论基础,内容包括内核源码结构、内存管理、进程管理、中断管理、系统调用、内核同步、时钟和定时器管理、信号、调度、进程间通信、文件系统和I/O设备管理等方面的内容。

    第六阶段 嵌入式硬件开发(学软件的可以不学,但了解硬件对学嵌入式软件有更深入的了解,尤其对系统的理解更深入。)
    内容包括单片机的学习,电路分析和电路的原理,PCB设计,主要包括Altium Designed,电子设计基础知识,原理图初步设计,进阶,提高,深入,pcb库的设计,集成库的作用和制作,pcb设计初步,PCB设计提高,PCB深入,对FPGA和CPLD系统的相关基础概念等

    第七阶段 嵌入式深入阶段
    变成高手,你还要进一步学习内核和系统,内容包括计算机系统结构和汇编,linux内核编程,linux内核的基础知识,汇编及保护模式,linux内核体系结构,linux引导程序分析,linux内核代码分析,linux块设备驱动程序分析等

    第八阶段  实践阶段
    其实就是循序渐进,先学好基础理论知识,然后动手试验,最后总结试验结果,验证所学知识并积累经验

    希望对你有帮助,加油!

    展开全文
  • 硬件,是整个嵌入式系统的根本,如果现在单片机及接口这块很熟悉,并且能用C和汇编语言来编程的话,从嵌入式系统的硬件走起来相对容易,硬件也是驱动的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图...
    硬件层,是整个嵌入式系统的根本,如果现在单片机及接口这块很熟悉,并且能用 C 和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成 CPLD 的逻辑设计的,同时还要对操作系统内核及其调度性相当的熟悉的。但硬件平台是基础,增值还要靠软件。

        硬件层比较适合于,电子、通信、自动化、机电一体、信息工程类专业的人来搞,需要掌握的专业基础知识有,单片机原理及接口技术、微机原理及接口技术、C语言。

    2、驱动层,这部分比较难,驱动工程师不仅要能看懂电路图还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导至其它任务不能动行,不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,很多人都能做到,但可能连个初级的驱动工程师的水平都达不到,这样所写的驱动在应用调用时就如同windows下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不就是等上一会才能运行后来打开的程序。想做个好的驱动人员没有三、四年功底,操作系统内核不研究上几编,不是太容易成功的,但其工资在嵌入式系统四层中可是最高的。  在嵌入式行业,做驱动层当然是最有前途的,但是难度也是最大的,其专业知识要求也是最广的。

        驱动层比较适合于电子、通信、自动化、机电一体、信息工程类专业尤其是计算机偏体系结构类专业的人来搞,除硬件层所具备的基础学科外,还要对数据结构与算法、操作系统原理、编译原理都要十分精通了解。

    3、操作系统层,对于操作系统层目前可能只能说是简单的移植,而很少有人来自已写操作系统,或者写出缺胳膊少腿的操作系统来,这部分工作大都由驱动工程师来完成。操作系统是负责系统任务的调试、磁盘和文件的管理,而嵌入式系统的实时性十分重要。据说,XP操作系统是微软投入300人用两年时间才搞定的,总时工时是600人年,中科院软件所自己的女娲Hopen操作系统估计也得花遇几百人年才能搞定。因此这部分工作相对来讲没有太大意义。  

    4、应用层,相对来讲较为容易的,如果会在windows下如何进行编程接口函数调用,到操作系统下只是编译和开发环境有相应的变化而已。如果涉及Java方面的编程也是如此的。嵌入式系统中涉及算法的由专业算法的人来处理的,不必归结到嵌入式系统范畴内。但如果涉及嵌入式系统下面嵌入式数据库、基于嵌入式系统的网络编程和基于某此应用层面的协议应用开发(比如基于SIPH.323Astrisk)方面又较为复杂,并且有难度了。所以对应用层主要是,编程语言和开发工具学习,以及良好的编程习惯和软件工程的,如果要增加自己在某个领域的竞争力,不妨学习一下TCP/IP中某层的协议。


    展开全文
  • OpenWRT(八)应用层开发

    万次阅读 2017-01-29 19:05:34
    一、应用层和kernel层很多人都是学习完单片机后才开始学嵌入式Linux的,刚开始学时都不能理解为什么写两个程序才能点亮LED,以前单片机只要写一个程序进去LED就可以控制了啊?这就是操作系统带来的分层思想。其实...

    一、应用层和kernel层

    很多人都是学习完单片机后才开始学嵌入式Linux的,刚开始学时都不能理解为什么写两个程序才能点亮LED,以前单片机只要写一个程序进去LED就可以控制了啊?这就是操作系统带来的分层思想。其实我们也可以直接在驱动中直接控制,但是这就失去了操作系统的意义了。

    驱动程序是在kernel层,应用程序是在应用层。两者关系:
    应用——》驱动 (调用驱动去操作底层硬件)

    二、应用程序实例

    用例子最能解释清楚知识了,我们该应用程序是调用上一节的字符驱动程序的。下面的内容以后可以作为模板使用。

    1、在package文件夹下新建一个chardrv_app文件夹
    2、在chardrv_app文件夹下新建一个Makefile文件,内容如下:

    #
    # Copyright (C) 2009-2010 Jo-Philipp Wich <xm@subsignal.org>
    #
    # This is free software, licensed under the GNU General Public License v2.
    # See /LICENSE for more information.
    #
    
    include $(TOPDIR)/rules.mk
    
    PKG_NAME:=chardrv_app
    PKG_RELEASE:=9
    
    PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
    
    include $(INCLUDE_DIR)/package.mk
    
    define Package/chardrv_app
      SECTION:=utils
      CATEGORY:=Utilities
      TITLE:=CharDrv_app
      DEPENDS:=+libncurses
    endef
    
    define Package/chardrv_app/description
     This package contains an character driver.
    endef
    
    define Build/Prepare
        mkdir -p $(PKG_BUILD_DIR)
        $(CP) ./src/* $(PKG_BUILD_DIR)/
    endef
    
    define Build/Configure
    endef
    
    define Build/Compile
        $(MAKE) -C $(PKG_BUILD_DIR) \
            CC="$(TARGET_CC)" \
            CFLAGS="$(TARGET_CFLAGS) -Wall" \
            LDFLAGS="$(TARGET_LDFLAGS)"
    endef
    
    define Package/chardrv_app/install
        $(INSTALL_DIR) $(1)/usr/sbin
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/chardrv_app $(1)/usr/sbin/
    endef
    
    $(eval $(call BuildPackage,chardrv_app))

    上面的Makefile和驱动的Makefile基本相似,可以从package中找一下其他模块的Makefile来进行修改,我上面的是使用nvram的Makefile进行修改的。

    3、在chardrv_app文件夹下新建一个src文件夹,在src下新建一个Makefile文件,内容为:

    all: chardrv_app
    OBJS = chardrv_app.o
    
    CC = gcc
    CCFLAGS = -Wall -c -o
    
    %.o: %.c
        $(CC) $(CCFLAGS) $@ $< $(LDFLAGS)
    
    chardrv_app: $(OBJS)
        $(CC) -o $@ $(OBJS) $(LDFLAGS)
    
    clean:
        rm -f rbcfg *.o
    

    4、在src下新建chardrv_app.c文件。内容如下:

    #include <stdio.h>
    #include <string.h>
    #include <fcntl.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <sys/ioctl.h>
    
    int main(int argc , char** argv)
    {
        //设备句柄
        int fd;
        int num = 1;
    
        //打开驱动模块
        fd = open("/dev/chardrv" , O_RDWR|O_NONBLOCK);
        if(fd < 0)
        {
            printf("can't open /dev/chardrv\n");
            return -1;
        }
    
        //函数测试
        write(fd,&num,1);
        read(fd,&num,1);
        ioctl(fd,1,1);
        close(fd);
    
        return 0;
    }

    5、make menuconfig将模块选中
    这里写图片描述

    这里写图片描述

    6、依次执行下面语句进行编译
    make package/chardrv_app/compile V=99
    make package/chardrv_app/install V=99
    make package/index V=99

    编译出来的文件在openwrt/bin/ramips/packages/base/下,文件名
    chardrv_app_9_ramips_24kec.ipk

    7、将编译好的固件放到开发板上,然后按照下面的图片进行测试。
    这里写图片描述

    三、出现的问题及解决方法

    安装应用时出现下面的问题:
    这里写图片描述

    解决方法: 重新使用make V=99编译openwrt固件,然后下载到开发板上。上面的问题主要是固件是之前的,不是最新的。要先编译驱动和应用程序后再重新编译路由固件,否则会出现这个问题。

    *编译时如果出现权限不够时,要加上sudo,这样就可以编译通过了。

    展开全文
  • 关于驱动层 hal硬件抽象层 应用层请参考s5p4418 Android 4.4.2 驱动层 HAL层 服务层 应用层 开发流程记录系列,总四篇文章,以及Android 4.4.2 动态添加JNI库方法记录系列,总两篇文章。 s5p4418 Android 4.4.2 ...
    展开全文
  • 首先为了理解安卓系统是怎么工作的,就先来看一下android的系统架构,其架构大至可以分为四层:linux内核层、系统运行库层、应用框架层和应用层,那就先说说这几层。 1.linux内核层: Android系统...
  • 鸿蒙系统应用开发初体验(一)

    万次阅读 多人点赞 2019-08-09 17:13:42
    上学时期就对操作系统非常有兴趣,甚至还想自己动手尝试尝试。 曾买来一堆关于操作系统的书籍肯,这不,翻出来几年前的博客《动手写简单的嵌入式操作系统https://blog.csdn.net/yyz_1987/article/details/9901269》...
  • 1、硬件,是整个嵌入式系统的根本,如果现在单片机及接口这块很熟悉,并且能用C和汇编语言来编程的话,从嵌入式系统的硬件走起来相对容易,硬件也是驱动的基础,一个优秀的驱动工程师是要能够看懂硬件的电路...
  • 应用层协议——原理

    千次阅读 2018-08-30 11:44:34
    因为网络核心设备(路由器、交换机等,不包括端系统设备)并不在应用层上起作用,只在网络层及下面层次起作用,所以不需要为网络核心设备写对应的应用程序,即开发应用程序的时候只需要考虑适配端系统,不需要考虑...
  • 嵌入式linux的开发流程以及linux应用层内容

    万次阅读 多人点赞 2019-04-01 18:19:21
    嵌入式linux开发流程: 1.搭建前期的开发环境,例如搭建linux主机环境,交叉编译器的安装,还有一些常用的开发辅助软件如source insight等等。 2.学习对硬件的直接操作,这里和单片机操作类似,我们需要查看原理图...
  • 应用层常用协议

    万次阅读 2016-07-29 20:44:35
    应用层常用协议
  • 应用层通信协议开发浅析

    万次阅读 2009-12-27 15:20:00
    通信协议精确地定义了双方通信控制信息和解释信息。协议反映的是对等的对等实体之间的一种横向关系,严格地说,协议是对等实体共同遵守的规则和约定的集合。
  • 基于TCP的应用层协议 基于UDP的应用层协议分别有哪些
  • 首先为了理解安卓系统是怎么工作的,就先来看一下android的系统架构,其架构大至可以分为四层:linux内核层、系统运行库层、应用框架层和应用层,那就先说说这几层。 1.linux内核层: Android系统...
  • 传输层协议、应用层协议

    千次阅读 2018-05-10 00:17:10
    传输层协议、应用层协议一、传输层协议1、传输层概述 (1)传输层的作用 IP层提供点到点的连接 传输层提供端到端的连接 (2)传输层的协议 TCP(Transmission Control Protocol)传输控制协议 可靠的、面向...
  • android framework是用于开发什么

    千次阅读 2017-10-29 23:16:18
    framework的开发应用层就要烦的多啦。应用在eclipse中就足够了,用android系统中的控件等工具,或者是自己写个类来实现特定的功能。而framework层的开发,需要往源码中添加代码、xml、图片、id等等数据,这个id...
  • 我们分析了驱动程序Logger的源代码,在前面的文章浅谈Android系统开发中Log的使用一文,我们也简单介绍在应用程序中使Log的方法,在这篇文章中,我们将详细介绍Android应用程序框架系统运行库存日志系统的源...
  • 论多层分布式结构系统开发

    千次阅读 2017-12-30 13:33:09
    论多层分布式结构系统开发摘要: 2015年初,我所在的公司承担了某集团公司的移动信息化开放平台的建设工作。我在该项目中担任系统架构设计师的职务,主要负责设计平台系统架构和安全体系架构。该平台以移动信息化...
  • C/S结构及其应用开发

    千次阅读 2018-09-03 19:53:20
    原 三C/S结构及其应用开发 200...
  • 鸿蒙系统(HarmonyOS)是基于微内核的全场景分布式OS,鸿蒙OS实现模块化耦合,对应不同设备可弹性部署,鸿蒙OS有三架构,第一是内核,第二是基础服务,第三是程序框架,鸿蒙OS底层由鸿蒙微内核、Linux内核、...
  • Android开发的技术层次

    千次阅读 2011-08-01 17:51:14
    android系统也是一样,在庞大的android开发人员群体中,我认为可以由低到高分为以下四个层次:1)应用层开发使用java语言,基于android的框架和类库,进行应用层程序的开发。这类开发一般依赖于短期记忆,也就是我们...
  • TCP和UDP是两个传输协议,广泛应用于网络中不同主机之间传输数据。对任何程序员来说,熟悉TCP和UDP的工作方式都是至关重要的。这就是为什么TCP和UDP是一个流行的Java编程面试问题。我曾经在各种不同的Java面试中见...
  • 我们在Android系统增加硬件服务的目的是为了让应用层的APP能够通过Java接口来访问硬件服务。那么, APP如何通过Java接口来访问Application Frameworks层提供的硬件服务呢?在这一篇文章中,我们将在Android系统的...
  • 最通俗易懂的网络应用层协议详解

    万次阅读 多人点赞 2017-02-23 17:21:00
    前言其实本文只是讲解从传输层到应用层实现网络消息传递的一个详细流程,至于更底层的网络层和网络接口层,那就不在我的考虑范围内了,事实上那部分机制是不需要你去操心的,除非你想开发操作系统!然后本文打着通俗...
  • 应用层常见的协议及对应的端口号

    万次阅读 2016-04-10 21:51:36
    在TCP/IP模型中,应用层是最高层。应用层包括所有的高层协议,并且不断有新的协议加入。TCP/IP参考模型中应用层和下层协议之间的关系如下:应用层的许多协议都是基于(C/S client /server)方式的。下面为我们就图片...
  • android 应用系统分为四结构

    千次阅读 2014-08-24 17:52:54
    a 应用程序 b应用程序ku
  • 安卓应用层与底层驱动之间的调用

    千次阅读 2017-08-25 10:13:28
    APP应用程序->应用框架->硬件抽象-> 硬件驱动程序一、硬件驱动进入kernel/drivers文件夹中,创建一文件夹,放入驱动程序。包括头文件,C文件,Makefile,Kconfig。同时对drivers下的Makefile跟Kconfig进行相应...
  • 基于TCP的应用层协议、基于UDP的应用层协议分别有哪些?  2011-11-4 14:55 提问者: li491623644 | 浏览次数:2054次| 该问题已经合并到>> 我来帮他解答 检举 | 2011-11-4 15:...
  • 这篇文章主要介绍了网络协议概述:物理层、连接层、网络层、传输层、应用层详解,本文用生活中的邮差邮局来帮助理解复杂的网络协议,通俗易懂,文风幽默,是少见的好文章,需要的朋友可以参考下 信号的传输总要符合...
  • 透明加密技术是近年来针对企业文件保密需求应运而生的一种...一旦离开使用环境,由于应用程序无法得到自动解密的服务而无法打开,从而起来保护文件内容的效果。 透明加密有以下特点: 强制加密:安装系统后,所有指定
  • 从图中可以看出Android分为4层,从高到低分别是应用层、应用框架层、系统运行库层和Linux内核层。下面将对这4层进行简要的分析和介绍。   1. 应用层 应用是Java语言编写的运行在虚拟机上的程序,如上图中最上层...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 808,542
精华内容 323,416
关键字:

系统的应用层与开发层是做什么的