zoukankan      html  css  js  c++  java
  • 一问一答一句话

    0

    问:为什么选择ARM处理器作为嵌入式处理器?

    答:原因之一是,ARM芯片具有大量的寄存器。由于ARM芯片采用RISC体系结构,其指令长度固定、格式规整、基本寻址方式简单。

    1

    移植操作系统或者其它开发时,不能为达到目的而不论它的应用价值。例如,我们将tinyos这一个专门为传感器网络而做的操作系统移植到CC2430芯片后,这只能说明TinyOS能够应用在一款比较成熟的芯片上,不能说明其它任何问题也不知道能应用在什么场合下,只有我们在写应用程序的时候去改变以往的顺序结构编程思想,采用TinyOS本身的特点写,然后去分析,这样才有意义。

    2

    xdata 指单片机里的Flash存取器,Flash相对单片机里的RAM属于外部存取器,虽其结构位置装在单片机中,所以搂主误解为xdata一定是放在单片机外面,其是xdata是放在相对RAM的外面,而flash正是相对RAM外面

    3

    问:为什么需要初始化时钟?

    答:因为通常开发板一上电时是以一个较低频率运行如12M,而芯片支持的频率高的多。

    4

    静态库VS共享库

    静态库的一个缺点是,当你同时运行多应用程序并且它们都使用来自同一个函数库的函数的时候,内存中就会有同一函数的多份副本,而且在程序文件自身中也有许多份同样的副本。这将消耗大量宝贵的内存和磁盘空间。

    5

    处理器之所以被设计出支持多种模式是为了能够更好地处理各种异常。但如果将各种异常分得太细,势必会使程序设计变得复杂,这也是ARM异常模式的一个主要缺点。所以在最新的ARMv7的体系结构中,人们便打破了这种模式设计的思路,使异常的是更加简化。

    6

    中断和快速中断的区别

    是共有寄存器在各个模式下都可以访问,所以当发生中断的时候,如果在中断模式下需要使用那些共有寄存器,为了不破坏原有数据,而不得不将它们的数据压入中断模式的堆栈中。把寄存器的值堆栈是需要花时间的。而经过看图你可以发殃,快速中断相比于中断模式又额外多出了5个私有寄存器,也就是说最多只需要将寄存器的R0-R7压入堆栈中。

    7

    当一种异常发生时,硬件就会自动执行如下动作:

    (1) 将CPSR保存到相应异常模式下的SPSR中。

    (2) 把PC寄存器保存到相应异模式下的LR中。

    (3) 将CPSR设置成相应的异常模式。

    (4) 设置PC寄存器的值为相应处理程序的入口地址。

    8

    如果需要读取另外一模式下的堆栈中的数据则可以将该模式下的堆栈指针寄存器存入R0中,因为R0-R3是不变的通用的。

     9

    nboot是samsung系列cpu为了能将前4KB程序复制到SRAM中运行,而在wince写的。
    eboot其实应该是Ethernet Boot,因为起始时,都是通过网口更新的。当然现在大部分反而通过USB了。
    uboot是linux下主要使用的,不过现在已经剥离开来,ce下已经可以移植了,只是用来debug的多,实际合入工程的少,毕竟与wince系统的契合度不高。

    10

     用gcc编译c程序的时候 经常会出现 implicit declaration of function '...' 的warning
    1  没有把函数所在的c文件生成.o目标文件
    2  在函数所在的c文件中定义了,但是没有在与之相关联的.h文件中声明

    11

    路由器是工作在广域网的架构设备,当今最大的广域网就是因特网

    12

    sh是最原始的shell, bash是advance的shell, 多了很多扩展和功能

    13

    编译使用了log函数的代码程序时,请带上-lm选项参数

     14

    文件流与文件描述符是不同的概念。文件流其实就是个文件指针,而文件描述符是操作系统级别的概念,open返回的是文件描述符,fopen返回的是文件流。每个文件流都有与之对应的文件描述符,它们之间的转换可通过fileno()函数

    15

    先输出了stderr的原因是,stdout在sleep之后不会立刻输出,而是等到进程要关闭的时候,所以之前每次都会先输出STDERR,等到进程结束的时候才把stdout的内容给刷出来。

    16

    如何将stdout等标准输出文件符定向到其它文件上。(默认是定向到/dev/tty文件上)。

    使用freopen函数。http://www.cnblogs.com/yaozhongxiao/archive/2011/08/25/2153532.html

    17

    用户登陆过程:

    init为每一个可以登陆的终端实现一个getty进程,getty进程读取用户名,并且启动login,读取密码,如果密码和用户名正确,哪么login就启动一个shell进程!

     

     

     

     

     

     

  • 相关阅读:
    springboot集成Spring Security安全框架(一)入门程序
    Redis学习(三)Redis 配置
    javax.servlet.ServletException: Could not resolve view with name 'order/list' in servlet with name 'dispatcherServlet'
    com.mysql.cj.exceptions.DataReadException: Zero date value prohibited
    Redis学习(二)Redis的安装
    Redis学习(一)简介
    Registering current configuration as safe fallback point
    IntelliJ IDEA为类和方法自动添加注释
    github 创建新项目
    pypi 的使用
  • 原文地址:https://www.cnblogs.com/dudu1990/p/2674494.html
Copyright © 2011-2022 走看看