当前位置: 首页 > article >正文

嵌入式Linux笔试题目

嵌入式Linux笔试题库

一.选择题

1。Linux的创始人是谁(   )

A、Turbolinux  B、AT&T Bell Laboratry

C、University of Helsinki   D、Linus Torvalds

2。在Linux中,命令解释器是哪个(    )

A、管道   B、分级文件系统   C、字符型处理器   D、 shell

 Shell 是一个程序,它提供了用户与操作系统之间的接口,允许用户输入命令来执行程序、管理文件和配置系统设置等。

3。Linux安装程序提供了两个引导装载程序(    )

  1. GROUP和LLTO   B、DIR和COID   C、GRUB和LILO   D、以上都不是

GRUB(GRand Unified Bootloader)和LILO(Linux Loader)是Linux系统中常用的两个引导装载程序。其中,GRUB是目前最流行的,它支持多操作系统启动,功能强大且易于配置。LILO曾经非常流行,但现在使用较少。

 

4。如果当前目录是/home/sea/china,那么“china”的父目录是哪个目录(   )

A、/home/sea  B、/home/      C、/      D、/sea

 

5。在Linux中,要删除abc目录及其全部内容的命令为:(   )

A、rm  abc  B、rm  -r  abc  C、rmdir  abc   D、rmdir —r abc

 这里的 rm 是 "remove" 的缩写,用于删除文件和目录。选项 -r 表示递归删除,即删除目录及其包含的所有子目录和文件。需要注意的是,这个命令非常强大,一旦执行,被删除的文件和目录将无法恢复,因此在使用时应该非常小心。

6.假定kernel支持vfat分区,下面哪一个操作是将/dev/hda1分区加载到/win目录?(    )

A、mount  -t  windows  /win   /dev/hda1

B、mount  —fs=msdos   /dev/hda1   /win

C、mount  -s   win    /dev/hda1  /win

D、mount –t  vfat    /dev/hda1  /win

 这里的 -t vfat 指定了文件系统类型为vfat(也称为msdos或fat32),/dev/hda1 是要挂载的设备,/win 是挂载点,即文件系统将在此目录下被访问。所以正确答案是:

D、mount -t vfat /dev/hda1 /win

其他选项中:

A项中的 -t windows 不是有效的文件系统类型。

B项中的 —fs=msdos 不是 mount 命令的正确参数。

C项中的 -s 并不是 mount 命令的标准选项,且 /win 放在了错误的位置。

7。显示用户的主目录的命令是什么(   )

  1. echo $HOME  B、echo $USERDIR  C、echo $ECHO  D、 echo $ENV

$HOME 是一个环境变量,它包含了当前用户的主目录的路径。在Unix和Linux系统中,这个变量通常被用来快速引用用户的主目录。其他选项中的变量不是用于显示用户主目录的标准环境变量。

 

8.系统中有用户user1和user2,同属于users组.在user1用户目录下有一文件file1,它拥有644的权限,如果user2用户想修改user1用户目录下的file1文件,应拥有(   )权限。

A、744   B、664   C、646   D、746

在Linux系统中,文件权限由三组数字表示,每组数字对应不同的用户类别:文件所有者(owner)、所属组(group)和其他用户(others)。数字权限由三位构成,每位数字分别代表不同的权限级别:

4 代表读(read)

2 代表写(write)

1 代表执行(execute)

权限数字是这些值的累加。

对于问题中的文件 file1,权限设置为 644,这意味着:

文件所有者有读(4)和写(2)权限,总和为6。

所属组有读(4)权限。

其他用户也有读(4)权限。

如果 user2 想修改 user1 目录下的 file1 文件,user2 需要有写权限。因为 user2 属于与 user1 相同的组 users,所以关键是组权限。

在给定的选项中:

A、744:所有者和组有全部权限,其他用户也有读和写权限。

B、664:所有者和组有读和写权限,其他用户只有读权限。

C、646:所有者和组有读权限,其他用户也有读权限。

D、746:所有者有全部权限,组有读和写权限,其他用户只有读权限。

为了让 user2 修改文件,文件的组权限需要包含写权限。因此,正确的选项是:

B、664

这样设置后,user2 作为 users 组的一员,将能够修改文件。

9.如何查看一个RPM软件包是否安装 (   )

A、rpm   —Vc   postfix           

B、rpm  -q   postfix

C、rpm   --changelog   postfix  

D、rpm   -q—changelog     postfix

这里的 -q 选项表示查询(query)。rpm -q 命令用于检查指定的软件包是否已经安装。如果软件包已安装,它会显示相关信息;如果没有安装,它会返回一个错误或者没有任何输出。

其他选项的解释:

A、rpm -Vc postfix 用于校验(verify)已安装的软件包 postfix 的完整性,并不是用来检查是否安装。

C、rpm --changelog postfix 用于显示软件包的更改日志,不是检查安装状态。

D、rpm -q --changelog postfix 命令格式不正确,-q 和 --changelog 不能同时使用。

 

10*.在Linux中,提供TCP/IP包过滤功能的软件叫什么(  )

A、rarp    B、route   C、iptables   D、filter

 iptables 是Linux内核中的一个防火墙软件,它允许系统管理员设置规则来控制进出Linux系统的网络流量。这些规则可以基于源地址、目的地址、端口号等信息来过滤数据包。

其他选项的解释:

A、rarp:反向地址解析协议(Reverse Address Resolution Protocol),用于将网络层地址映射到数据链路层地址,与TCP/IP包过滤无关。

B、route:用于显示和管理网络路由表的命令,不涉及TCP/IP包过滤。

D、filter:这个词通常指的是过滤操作,但不是Linux中用于TCP/IP包过滤的软件名称。

11.nfs服务的配置文件是什么?(   )

/etc/mtab  B、/etc/fastboot  C、 /etc/fstab  D、 /etc/exports

这个文件用于配置NFS服务器要共享的目录以及这些目录的权限和选项。在配置文件中,可以指定哪些目录被导出,以及谁可以访问它们,并可以为共享设置特定的权限以进一步限制访问

 

12。用命令ls —al显示出文件ff的描述: —rwxr—xr—-  1  root  root  599  Cec 10 17:12  ff  由此可知文件ff

的类型为:(    )

  1. 普通文件   B、硬连接   C、目录   D符号连接

文件 ff 的类型可以从其权限描述中的第一个字符来判断。在 ls -l 命令的输出中,第一个字符表示文件类型:

- 表示普通文件。

d 表示目录。

l 表示符号链接(软链接)。

b 表示块设备。

c 表示字符设备。

权限 (-rwxr-xr--):

-rwx:第一个字符表示文件类型和权限。- 表示这是一个普通文件。接下来的三个字符 rwx 表示文件所有者(在这个例子中是 root 用户)具有读(read)、写(write)和执行(execute)权限。

r-x:接下来的三个字符表示所属组(在这个例子中也是 root)的权限。这里的 r-x 表示组用户有读和执行权限,但没有写权限。

r--:最后的三个字符表示其他用户(除了文件所有者和所属组之外的所有用户)的权限。这里的 r-- 表示其他用户只有读权限。

硬链接数 (1):

这个数字表示有多少个硬链接指向这个文件。每个文件至少有一个硬链接,因为这是它的主名称。如果数字大于1,那么表示有其他位置的链接指向这个文件。

所有者 (root):

这是文件的所有者的用户名。在这个例子中,文件所有者是 root。

所属组 (root):

这是文件所属的用户组。在这个例子中,文件所属组也是 root。

文件大小 (599):

这是文件的大小,单位是字节。在这个例子中,文件 ff 的大小是 599 字节。

日期和时间 (Cec 10 17:12):

这是文件的最后修改时间。格式通常是 月 日 时:分。在这个例子中,文件最后被修改的时间是 July 10th at 17:12(假设 Cec 代表 July,这可能因本地化设置而异)。

文件名 (ff):

这是文件的名称。在这个例子中,文件名是 ff。

 

13.Linux操作系统中的shell是(     )

A、命令解释器   B、程序设计语言   

 C、脚本编辑器   D、编译器

 Shell 是用户与操作系统之间的接口,它解释用户输入的命令并将其转换为系统可以执行的操作。用户可以通过Shell来运行程序、管理文件和配置系统设置等。

14.能实现文件系统远程挂载的是(  ).

A.SAMBA  B.NFS   C。NIS   D.HTTPS

 NFS(Network File System)网络文件系统是一种允许远程计算机之间共享文件的分布式文件系统协议。它允许用户和程序像访问本地文件一样访问位于远程系统上的文件。通过NFS,可以在网络上挂载远程文件系统,使得本地系统可以访问和操作远程系统上的文件,就像它们位于本地一样。其他选项如Samba、NIS和HTTPS虽然与网络文件共享和传输有关,但它们不提供远程挂载文件系统的功能。

15.Linux系统下硬盘分区,能直接使用的分区是()

A、主分区

B、扩展分区

C、逻辑分区

D、扩展分区和逻辑分区

主分区(Primary Partition)是硬盘分区的一种类型,可以直接被操作系统识别和使用。一个硬盘最多可以有四个主分区。扩展分区(Extended Partition)是一个特殊的分区,它本身不直接用于存储数据,而是用来容纳逻辑分区(Logical Partitions),每个扩展分区可以进一步划分为多个逻辑分区。逻辑分区是扩展分区内的分区,它们也不直接用于存储数据,而是通过扩展分区来实现的。

因此,直接可用的是主分区。扩展分区和逻辑分区需要通过特定的方式(如创建文件系统、挂载等)来使用。

 

16.Linux系统的1.0版内核的发布是在(   )

A。1992年   B。1993年   C.1994年   D.1995年

 

(完整版)嵌入式Linux笔试题库和答案(新)

 17.在vi编辑器的命令模式中,在光标所在位置的右侧插入字符的命令是(   )

A。a   B。A  C。i  D。I

A. a

这个命令会将光标移动到当前位置的右侧,并进入插入模式,允许你插入新的字符。

其他选项的解释:

B. A:在vi中,大写的 'A' 命令会将光标移动到当前行的末尾,并进入插入模式,但不会移动到右侧。

C. i:这个命令会在光标所在位置的左侧插入字符。

D. I:这个命令会将光标移动到当前行的开头,并进入插入模式,但不会移动到右侧。

 

18.要给文件file1加上其他人可执行属性的命令是(    )

A.chmod a+x    B。chown a+x    C。chmod o+x    D。chown o+x

C. chmod o+x

这个命令使用 chmod(change mode)来更改文件的权限,o+x 指定了给予其他人组(others)执行(execute)权限。

其他选项的解释:

A. chmod a+x:这个命令会给予所有用户(all,即所有者、所属组和其他用户)执行权限,而不仅仅是其他人。

B. chown a+x:chown 命令用于更改文件的所有者,而不是设置权限,并且 a+x 不是 chown 命令的正确语法。

D. chown o+x:同样,chown 命令用于更改文件的所有者,并且 o+x 不是 chown 命令的正确语法。

19下面哪个linux 命令可以一次显示一页内容?(    )

A。 pause    B. cat     C。 more      D. grep

more 命令用于分页显示文件内容,每次显示一页,用户可以按空格键翻到下一页,或者按回车键逐行显示。

其他选项的解释:

A. pause:这不是一个标准的Linux命令,也没有内置的 pause 命令来分页显示内容。

B. cat:这个命令用于连接文件并打印到标准输出设备上,它不会分页显示内容

D. grep:用于搜索文件里符合条件的字符串,并不是用来分页显示文件内容的。

NOTE:less,more,cat三者都是将文件内容输出到标准输出,其中less和more可以分页显示,cat是显示全部,三者可以根据已经存在的文件创建新的文件。假设已经存在文件1.txt。

cat 1.txt > 2.txt

less 1.txt > 3.txt

more 1.txt > 4.txt

此时创建的文件内容都和1.txt中文件内容相同。

查看文件内容有哪些命令可以使用?

vi 文件名  #编辑方式查看,可修改

cat 文件名 #显示全部文件内容

more 文件名 #分页显示文件内容

less 文件名 #与 more 相似,更好的是可以往前翻页

tail 文件名 #仅查看尾部,还可以指定行数

head 文件名 #仅查看头部,还可以指定行数

20、下面命令的作用是:set ps1="[\u\w\t]\\$”,export ps1(    )

A。 改变错误信息提示

B. 改变命令提示符

C. 改变一些终端参数

D. 改变辅助命令提示符

B. 改变命令提示符

这个命令设置了 Bash shell 的主提示符(PS1)。\[ 表示开始一个转义序列,\u 表示当前用户名,\w 表示当前工作目录,\t 表示当前时间,\\$ 表示结束转义序列和提示符的结束字符(通常是 $ 或者 #,取决于当前用户是否是 root)。export ps1 命令将这个自定义的提示符导出为环境变量,使得它在当前会话和后续的会话中都有效。

其他选项的解释:

A. 改变错误信息提示:这个命令不会改变错误信息的提示。

C. 改变一些终端参数:这个命令是改变命令提示符,而不是终端参数。

D. 改变辅助命令提示符:PS1 是主提示符,不是辅助命令提示符。辅助提示符通常由 PS2 环境变量控制,用于命令行分次输入时的提示。

21、如何从当前系统中卸载U盘(    )

A。 umount

B. dismount

C。 mount —u

D。 从/etc/fstab 中删除这个文件系统项

  使用 umount 命令后,通常需要指定U盘的挂载点或设备文件。例如,如果U盘挂载在 /media/usb,那么命令将是:

umount /media/usb

或者,如果知道U盘的设备文件,比如 /dev/sdb1,命令可以是:

umount /dev/sdb1

在卸载文件系统之后,可以使用 lsof 命令检查是否有进程仍然在使用U盘,确保没有进程在使用后,可以安全拔出U盘。

其他选项的解释:

B. dismount:这不是一个标准的Linux命令。

C. mount -u:mount -u 选项用于重新挂载文件系统,而不是卸载。

D. 从/etc/fstab 中删除这个文件系统项:这个操作只是从启动时自动挂载的文件系统列表中移除U盘,并不实际卸载U盘。实际上,物理拔出U盘之前,应该先使用 umount 命令确保文件系统已经被卸载。

22、在linux 中,如何标识第一块IDE硬盘 上的第2 个扩展分区?(    )

A. /dev/hdb2

B。 /dev/hd1b2

C。 /dev/hdb6

D. /dev/hd1b6

  在Linux中,标识IDE硬盘上的扩展分区通常使用以下命名约定:

/dev/hda:第一块IDE硬盘的主分区。

/dev/hdb:第二块IDE硬盘的主分区。

/dev/hdc:第三块IDE硬盘的主分区。

/dev/hdd:第四块IDE硬盘的主分区。

对于扩展分区,它们被编号为 5 到 h,其中:

/dev/hda5:第一块IDE硬盘上的第一个扩展分区。

/dev/hdb6:第二块IDE硬盘上的第二个扩展分区。

因此,要标识第一块IDE硬盘上的第二个扩展分区,应该使用:

C. /dev/hdb6

这个标识符表示第二块IDE硬盘(hdb)上的第二个扩展分区(从 5 开始计数)。选项A和B的编号不正确,选项D的设备名称不正确。

23、下面哪条命令可以把f1.txt 复制为f2。txt? (    )

A。 cp f1.txt | f2。txt

B。 cat f1.txt | f2。txt

C. cat f1.txt > f2.txt

D。 copy f1.txt | f2.txt

在Linux中,复制文件的命令是 cp。因此,正确的命令来把 f1.txt 复制为 f2.txt 是:

C. cat f1.txt > f2.txt

这个命令使用 cat 来读取 f1.txt 的内容,并通过重定向操作符 > 将内容写入到 f2.txt 中,从而实现复制。

其他选项的解释:

A. cp f1.txt | f2.txt:这个命令的格式不正确。| 是管道符号,用于将一个命令的输出作为另一个命令的输入,而不是用来复制文件。

B. cat f1.txt | f2.txt:同样,这个命令的格式不正确,并且 | 用于管道,不是文件重定向。

D. copy f1.txt | f2.txt:copy 命令在Linux中通常不是内置的命令,正确的命令是 cp。同样,| 用于管道,不是文件重定向。

 

24、下面哪个命令可以压缩部分文件:(    )

A. tar —dzvf filename。tgz *

B。 tar -tzvf filename。tgz *

C。 tar -czvf filename。tgz *

D。 tar -xzvf filename。tgz *

要压缩多个文件,可以使用 tar 命令与 gzip 压缩选项结合使用。正确的命令格式是 tar -czvf archive_name.tgz files_to_compress,其中:

c 代表创建一个新的压缩包。

z 代表用 gzip 压缩。

v 代表在压缩的过程中显示文件。

f 代表指定压缩包的名称。

因此,正确的命令是:

C. tar -czvf filename.tgz *

这个命令会将当前目录下的所有文件(* 代表所有文件)压缩成一个名为 filename.tgz 的压缩包。

其他选项的解释:

A. tar —dzvf filename。tgz *:命令中的 d 选项用于解压压缩包,并且命令中的破折号应该是单个连字符。

B. tar -tzvf filename。tgz *:命令中的 t 选项用于列出压缩包内容,而不是压缩文件。

D. tar -xzvf filename。tgz *:命令中的 x 选项用于解压压缩包,而不是压缩文件。并且命令中的破折号应该是单个连字符。

25。与通用操作系统相比嵌入式操作系统还必须具有的特点是(      )

A强稳定性,弱交互性  B  较强实时性  C  可伸缩性   D  功耗管理与节能

嵌入式操作系统(Embedded Operating System, EOS)与通用操作系统(如桌面或服务器操作系统)相比,通常需要满足特定的硬件和应用需求。嵌入式系统通常运行在资源受限的环境中,因此它们必须具备一些特别的特点。在给出的选项中:

A. 强稳定性,弱交互性:虽然稳定性对于所有操作系统都很重要,但这不是嵌入式操作系统独有的特点。

B. 较强实时性:实时性是嵌入式操作系统的一个重要特点,尤其是在需要快速响应的系统中。然而,并非所有嵌入式系统都要求强实时性。

C. 可伸缩性:可伸缩性是一个重要的特性,但它同样适用于通用操作系统。

D. 功耗管理与节能:这是嵌入式操作系统通常必须具备的一个关键特点,因为许多嵌入式设备依赖电池供电或需要在能源受限的环境中运行。

因此,正确答案是:

D. 功耗管理与节能

这个特点是嵌入式操作系统在设计时必须考虑的,以确保设备能够在有限的能源条件下有效运行。

26。下列那种设备不属于嵌入式系统产品(      ).

A、PDA   B  ATM取款机  C 个人计算机   D  机顶盒

27.下列是开源的嵌入式操作系统的是(     )

A.嵌入式linux  B  uc/os  D  Palm OS   E  WinCE

A. 嵌入式linux

嵌入式Linux是一种基于Linux内核的操作系统,广泛用于各种嵌入式系统。它是开源的,可以根据需要进行修改和定制。

其他选项的解释:

B. uc/os:通常指的是μC/OS,这是一个实时操作系统内核,它有商业版本和开源版本(如μC/OS-II和μC/OS-III),但并不是所有版本都是开源的。

D. Palm OS:这是一个商业的、专有的操作系统,不是开源的。

E. WinCE:即Windows CE,是微软开发的嵌入式操作系统,属于商业产品,不是开源的。

28。下列不属于ARM处理器异常工作模式的是(          )

  1. 快速中断模式 B. 未定义模式  C.数据访问终止模式 D。 用户模式

在ARM处理器中,异常工作模式包括快速中断模式(FIQ)、未定义指令模式(UND)、外部中断模式(IRQ)、数据访问终止模式(ABT,也称为中止模式)、管理模式(SVC)等。这些模式是为了处理特定的中断和异常情况而设计的。其中,用户模式(USR)和系统模式(SYS)通常不被视为异常模式。用户模式是用于正常执行程序的普通模式,而系统模式是运行特权级操作系统任务的模式,它与用户模式类似,但具有可以直接切换到其他模式等特权。

因此,不属于ARM处理器异常工作模式的是:

D. 用户模式

用户模式是ARM处理器的一种普通工作模式,而不是异常模式。其他选项A、B、C均属于ARM处理器的异常工作模式。

29.嵌入式软件开发与通用软件开发增加了(          )环节

A. 代码编写  B。 代码调试  C。 代码固化  D. 软件测试

 嵌入式软件开发与通用软件开发相比,通常增加了将软件固化到嵌入式系统存储介质上的环节。这个过程确保了软件在没有外部存储介质(如硬盘或可移动介质)的情况下,能够直接从嵌入式设备的内存或闪存等非易失性存储中启动和运行。

因此,正确答案是:

C. 代码固化

代码固化是指将程序和数据写入到嵌入式系统的ROM、闪存或其他类型的非易失性存储器中,以便在系统启动时能够直接运行。这个过程对于嵌入式系统是特有的,因为它们通常需要在没有操作系统或文件系统支持的情况下运行。其他选项如代码编写、代码调试和软件测试在嵌入式软件开发和通用软件开发中都是常见的环节。

30。嵌入式系统调试方式中不占用系统资源的调试方式是()

A  模拟器方式  

B  监控器方式

C  ICE在线仿真器  

D  IDE在线调试器方式

在嵌入式系统调试中,不占用系统资源的调试方式通常是使用模拟器进行软件仿真。模拟器可以在宿主机上运行嵌入式系统的代码,通过模拟目标系统的硬件和外设来实现对代码的调试。这种方式不需要实际的硬件环境,因此不会占用目标系统的资源。

因此,正确答案是:

A. 模拟器方式

模拟器方式通过软件模拟来实现调试,而监控器方式、ICE在线仿真器和IDE在线调试器方式通常会与目标硬件交互,可能会占用一定的系统资源。

31。烧写到FLASH里的是(        )格式的文件。

  1.  。asm  B. .bin  C. 。obj   D。.cpp

烧写到FLASH里的通常是二进制格式的文件,因为它直接代表了机器代码和数据,能够被嵌入式系统的处理器直接读取和执行。在提供的选项中:

B. .bin

.bin 文件格式是最直接存储flash memory的raw data的格式。它通常用于存储编译后的机器代码,可以直接被嵌入式系统的处理器执行。这种格式的文件不包含任何额外的元信息,如地址或调试信息,因此它是烧写到FLASH中最常见的格式。

其他选项的解释:

A. .asm:这是汇编语言源文件的扩展名,不是烧写到FLASH的格式。

C. .obj:这是编译过程中的中间对象文件,通常不会直接烧写到FLASH。

D. .cpp:这是C++ 源文件的扩展名,不是烧写到FLASH的格式。

32.汇编程序中的伪指令是在(           )阶段起作用。

A。 编辑 B。 链接 C.编译  D。  执行

  汇编程序中的伪指令是在编译阶段起作用。伪指令为编译器提供了关于如何汇编程序的信息,例如定义数据、分配存储空间、指定程序的内存布局等。编译器根据这些伪指令生成目标代码,但伪指令本身并不直接转换成机器代码。

因此,正确答案是:

C. 编译

其他选项的解释:

A. 编辑:这个阶段通常指的是编写源代码,而不是处理伪指令。

B. 链接:这个阶段发生在编译之后,它将不同的编译单元(对象文件)组合成最终的可执行文件,但伪指令在这个阶段不起作用。

D. 执行:这个阶段指的是CPU执行程序的机器指令,伪指令在此阶段也不起作用。

33、目前嵌入式处理器的种类大约有(                )

A。 500多种 B。800多种  C. 1000多种   D.2000多种

 

34.嵌入式系统中硬件层主要包括了嵌入式系统必要的硬件设备,(),存储器,I/O等.

A 嵌入式微处理器  B 嵌入式控制器  C单片机    D .SOC

嵌入式系统中硬件层主要包括嵌入式系统必要的硬件设备,如嵌入式微处理器、单片机、存储器和I/O等。其中,SOC(System on Chip,系统级芯片)是一种将传统微处理器、存储器、输入输出设备等集成在一个芯片上的技术,它实现了系统的微型化和高效能。SOC是嵌入式系统硬件层的重要组成部分,因为它集成了整个系统的核心功能。

35。解压文件linux.tar。gz使用的命令是(  )

A。tar –jxvf linux.tar.gz   B .tar jcvf linux.tar。gz  

C 。tar –zxvf linux。tar。gz  D。 tar –czvf linux。tar.gz

在Linux中,解压 .tar.gz 文件通常使用的命令是 tar,配合适当的选项来解压缩。正确的命令格式是 tar -zxvf filename.tar.gz,其中:

z 表示解压缩(uncompress)。

x 表示提取(extract)。

v 表示详细模式(verbose),显示正在处理的文件。

f 表示指定文件名。

因此,正确的命令是:

A. tar –jxvf linux.tar.gz

这里的 -j 选项是用于处理通过 bzip2 压缩的文件,但对于 gzip 压缩的 .tar.gz 文件,应该使用 -z 选项。

其他选项的解释:

B. tar jcvf linux.tar.gz:缺少 -x 选项,且没有指定正确的压缩格式选项。

C. tar –zxvf linux.tar.gz:文件名的扩展名写错了,应该是 .tar.gz 而不是 .tar.gz。

D. tar –czvf linux.tar.gz:这个命令是用来创建压缩文件,而不是解压。

36.在vi处于命令行模式时,如果需要对文本进行修改,欲在光标所在位置的下一个位置开始输入字符,则(  ).

A按下字母i进入插入模式   B 按下字母a进入插入模式

C 按下字母O进入插入模式  D 按下字母n进入插入模式

37.当前vi处于插入模式时,现放弃对文本修改,既不保存退出vi,则(    )

A.使用“:q!"命令    B. 使用“:wq!"命令退出  

C. 先按“ESC”后,使用":q!”命令退出。

D先按“ESC”后,使用":wq!”命令退出

 

38。经过汇编后,生成的目标文件的后缀名为(    )

A.。c   B 。s  C  。o   D .exe

 

39。对代码文件code.c编译,生成可调式代码的命令是()

A  #gcc –g code.c –o code

B  #gcc  code.c –o code

C #gcc –g code。c code  

D #gcc –g code

 

40.NAND FLASH和NOR FLASH的区别正确的是()

A。 NOR的读速度比NAND稍慢一些

B NAND 的擦除速度远比NOR的慢

C.NAND的写入速度比NOR慢很多

D.大多数写入操作需要先进行擦除操作。

NOR FLSH可以像内存一样读,但不能像内存一样写

A. NOR的读速度比NAND稍慢一些:这个说法是错误的。NOR FLASH通常提供更快的读取速度,而NAND FLASH提供更快的写入速度。

B. NAND 的擦除速度远比NOR的慢:这个说法也是错误的。NAND FLASH的擦除速度通常比NOR FLASH快。

C. NAND的写入速度比NOR慢很多:这个说法是错误的。NAND FLASH的设计通常是为了提供更快的写入速度,尤其是在连续写入操作时。

D. 大多数写入操作需要先进行擦除操作:这个说法是正确的。无论是NAND还是NOR FLASH,写入数据之前通常需要先擦除相应的存储单元,因为FLASH存储器不能在已有数据上直接写入新数据。擦除操作通常涉及将整个块(block)或页面(page)的数据设置为默认状态(通常是全1或全0)。

二、多项选择题:

 

1。常见的Linux发行版本有:( )

A、Redhat Linux   B、Turbo Linux   C、Debian GNU/Linux   

D、SuSE Linux      E、Mandrake Linux

A. Redhat Linux:现在称为Red Hat Enterprise Linux(RHEL),是一个广泛使用的商业Linux发行版。

C. Debian GNU/Linux:简称Debian,是一个由社区维护的Linux发行版,以其稳定性和安全性著称。

D. SuSE Linux:现在称为SUSE Linux Enterprise Server(SLES),是另一个商业Linux发行版,由SUSE公司提供。

E. Mandriva Linux:曾经是一个流行的Linux发行版,但现在已经停止开发。

B. Turbo Linux:也是一个Linux发行版,但相比其他选项,它的流行度和使用范围较小。

因此,所有选项A、B、C、D和E都是Linux的发行版本,但其中一些可能不像其他一些那样广泛使用或知名。

2.请选出所有能将文件a.dat的权限从’rwx——-—-—’ 改为 ’rwxr—x——-’的命令: (  CD )

A、chown  rwxr—x-—— a。dat    B、chmod  rwxr—x——— a。dat

C、chmod  g+rx  a.dat         D、chmod  750  a。Dat

要将文件 a.dat 的权限从 'rwx——-—-'(即所有者有读、写、执行权限,组和其他用户没有任何权限)改为 'rwxr-x——-'(即所有者有读、写、执行权限,组用户有读、执行权限,其他用户没有任何权限),可以使用以下命令:

C. chmod g+rx a.dat:这个命令会给组用户添加读和执行权限,符合要求。

D. chmod 750 a.dat:这个数字表示的权限是所有者有读、写、执行(7),组用户有读、执行(5),其他用户没有任何权限(0)。这同样符合要求。

A. chown 命令用于更改文件的所有者或所属组,而不是用来改变文件权限的。

B. chmod rwxr-x——— a.dat:这个命令的格式是错误的。chmod 命令需要使用八进制数字或使用 +、- 等符号来改变权限。

因此,正确答案是:

C. chmod g+rx a.dat D. chmod 750 a.dat

3.对于所有用户都能读的文件权限是( ABC     )

A.777     B.444      C。644     D。640

对于所有用户都能读的文件权限,意味着文件的读权限(4)应该对所有者(所有者位)、所属组(组位)和其他用户(其他位)都开放。在八进制表示法中,读权限用数字4表示,写权限用数字2表示,执行权限用数字1表示。没有特定权限则不添加数字。

因此,正确的权限设置应该是:

B. 444 - 所有者、所属组和其他用户都有读权限。 C. 644 - 所有者有读和写权限,所属组和其他用户只有读权限。

A. 777 - 所有者、所属组和其他用户都有读、写和执行权限。 D. 640 - 所有者有读和写权限,所属组和其他用户只有读权限。

三.填空题

1.Linux一般包括四个主要部分,(内核)(系统库)(shell)(应用程序)。

2。目前,几乎所有的linux发行版本都包括了(图形用户界面(GUI))和(命令行界面)两种。

3.Linux内核主要由(核心)(内存管理)(进程管理)(文件系统)(设备驱动)5部分组成.

4.vi编辑器的三种状态(命令模式)(插入模式)(可视模式)。

5.使用gcc编译文件生成可执行文件要经历四个相互关联的步骤:(预处理)(编译)(汇编)和(链接)。

6.bootloader常见的两种操作模式是(正常模式)和(维护模式),仅仅对开发人员有用的模式是(维护模式)。

 

四.问答题

1。 makefile文件的作用是什么?

      答案:一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

 

2。Linux显示文件夹中隐藏文件信息的命令是什么?

 在Linux中,要显示文件夹中包括隐藏文件在内的所有文件信息,可以使用以下命令:

ls -la

-l:长格式列表,显示文件的详细信息,包括权限、所有者、大小和时间戳。

-a:显示所有文件,包括以点(.)开头的隐藏文件。

3。Linux文件属性有哪些?(共十位)

       -rw-r--r—1

        第一个属性代表这个文件是【目录、文件或连结文件】,当为[ d ]则是目录,为[ — ]则是文件,若是[ l ]则表示为连结档(link file);

 

若是[ b ]则表示为装置文件里面的可供储存的接口设备; 

若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标。

       接下来的属性中,三个为一组,且均为【rwx】三个参数的组合,其中[r]代可读、

[w]代表可写、[x]代表可执行:

第一组为【拥有人的权限】,

 第二组为【同群组的权限】;

 第三组为【其它非本群组的权限】。

 

4.说明下述Linux系统命令的主要功能是什么。

显示文件目录命令ls

      改变当前目录命令cd  如cd / /home

 

      建立子目录mkdir  mkdir xiong

 

      删除子目录命令rmdir  如 rmdir /mnt/cdrom

 

      删除文件命令rm  如 rm /ucdos。bat

 

      文件复制命令cp   如 cp /ucdos/* /fox

 

      获取帮助信息命令man 如 man ls

 

      显示文件的内容cat more less

 

5.简述Linux在嵌入式系统市场上取得辉煌的成果的原因。

 Linux在嵌入式系统市场上取得辉煌的成果的原因主要包括以下几点:

广泛的硬件支持:Linux能够支持多种体系结构,如x86、ARM、MIPS等,并且已经成功移植到数十种硬件平台上,几乎能够运行在所有流行的CPU上。这使得Linux能够适应各种不同的嵌入式硬件需求。

内核高效稳定:Linux内核的设计非常精巧,分成进程调度、内存管理、进程间通信、虚拟文件系统和网络接口五大部分。其模块机制可以根据用户的需要,实时地将某些模块插入到内核或从内核中移走,这使得Linux系统内核可以裁剪得非常小巧,很适合于嵌入式系统的需要。

开放源码,软件丰富:Linux是开放源代码的自由操作系统,为用户提供了最大限度的自由度。由于嵌入式系统千差万别,往往需要针对具体的应用进行修改和优化,因而获得源代码就变得至关重要。Linux的软件资源十分丰富,每一种通用程序在Linux上几乎都可以找到,并且数量还在不断增加。

优秀的开发工具:Linux为开发者提供了一套完整的工具链(ToolChain),包括编译器、调试工具等,能够很方便地实现从操作系统到应用软件各个级别的调试。

完善的网络通信和文件管理机制:Linux支持所有标准的Internet网络协议,并且很容易移植到嵌入式系统当中。此外,Linux还支持多种文件系统,这些都为开发嵌入式系统应用打下了很好的基础。

实时性和可靠性:Linux内核的实时性补丁使得Linux可以作为实时操作系统使用,满足嵌入式系统对实时性的要求。同时,Linux的稳定性和可靠性也在各个领域内得到了验证。

成本效益:Linux作为一种免费且开源的操作系统,可以减少嵌入式系统开发的总体成本,同时也降低了产品的上市时间。

社区支持:Linux拥有一个庞大的开发者社区,这意味着在开发过程中可以获得大量的支持和资源,促进了技术的快速发展和问题的快速解决。

6.简述嵌入式Linux系统开发流程。

 

   答:嵌入式系统平台移植主要包括以下几部分

  1. 交叉编译器的制作和安装
  2. Bootloader开发和移植
  3. 嵌入式操作系统开发和移植
  4. 根文件系统制作和移植
  5. 应用程序开发 
  6. 系统集成和测试 

7*.嵌入式根文件系统的设计目标应该包括哪些方面?

 嵌入式根文件系统是嵌入式系统中的一个关键组成部分,它为系统提供了运行时所需的环境和工具。

8*.arm系列处理器arm7tdmi中的tdmi四个字母的含义。

 ARM7TDMI是ARM公司设计的一款32位微处理器内核,广泛应用于嵌入式系统。"TDMI"每个字母的含义如下:

T:代表Thumb指令集,这是ARM架构中的16位压缩指令集,可以提高代码的密度,减少存储空间的需求。

D:代表Debug,意味着支持片上调试功能,使得处理器能够响应调试请求,方便进行系统调试和错误排查。

M:代表Multiplier,即内嵌硬件乘法器,增强了处理器的乘法运算能力,可以执行更复杂的数学运算。

I:代表ICE,即嵌入式ICE(In-Circuit Emulation)硬件仿真功能模块,支持片上的断点和观察点,有助于系统的仿真和调试。

9。嵌入式系统发展经历了那些阶段,有什么特点?

 

10*.嵌入式系统的设计方法和过程与传统的单片机开发有什么不同?

 

复杂性

嵌入式系统:通常更加复杂,涉及多个硬件组件和软件模块,可能包括操作系统、设备驱动、应用程序等多个层次。

单片机开发:相对简单,通常围绕一个单一的微控制器进行开发,功能专一,系统资源有限。

硬件组成:

嵌入式系统:可能包含多种处理器和硬件设备,如微处理器、数字信号处理器(DSP)、图形处理器(GPU)、传感器、网络接口等。

单片机开发:通常只涉及一个单片机(MCU),所有的功能都集成在一个芯片上。

软件架构:

嵌入式系统:可能需要复杂的软件架构,包括实时操作系统(RTOS)、文件系统、网络协议栈、设备驱动程序等。

单片机开发:软件通常直接编写在微控制器上,不需要复杂的操作系统支持,可能只使用简单的中断和直接内存访问。

开发工具和环境:

嵌入式系统:开发环境通常更加复杂,可能需要集成开发环境(IDE)、跨平台工具链、模拟器、调试器等。

单片机开发:开发工具相对简单,通常一个简单的IDE或汇编器就足够了。

开发过程:

嵌入式系统:开发过程可能包括需求分析、系统设计、硬件选择、软件设计、系统集成、测试和验证等多个阶段。

单片机开发:开发过程相对直接,通常涉及编写代码、编译、烧录到单片机、测试等步骤。

可扩展性和可维护性:

嵌入式系统:设计时需要考虑系统的可扩展性和可维护性,以便未来的升级和维护。

单片机开发:由于系统规模较小,可扩展性和可维护性可能不是首要考虑的问题。

资源限制:

嵌入式系统:虽然可能有更多的资源,但设计时仍然需要考虑资源的优化和有效利用,尤其是在电池供电的移动设备中。

单片机开发:资源通常非常有限,开发时必须非常注意代码大小和内存使用。

目标应用:

嵌入式系统:适用于广泛的应用领域,从简单的家用电器到复杂的工业控制系统。

单片机开发:通常用于成本敏感或对处理能力要求不高的应用,如简单的控制任务或家用电器。

11。简述哈佛体系结构和冯诺依曼体系结构的不同点.

 定义

冯诺依曼结构釆用指令和数据统一编址,使用同条总线传输,CPU读取指令和数据的操作无法重叠。

哈佛结构釆用指令和数据独立编址,使用两条独立的总线传输,CPU读取指令和数据的操作可以重叠。

利弊

冯诺依曼结构主要用于通用计算机领域,需要对存储器中的代码和数据频繁的进行修改,统一编址有利

于节约资源。

哈佛结构主要用于嵌入式计算机,程序固化在硬件中,有较高的可靠性、运算速度和较大的吞吐。

12.简述NAND_FLASH和NOR_FLASH的异同点?

相同点

写之前都需要先擦除,因为写操作只能使1->0 而擦除动作是为了把所有位都变1,擦除都以块为单位

13。简述S3C2410与ARM920T的关系。

  S3C2410与ARM920T的关系是,S3C2410是一款由三星电子公司设计的嵌入式微处理器,它采用了ARM920T作为其核心CPU。ARM920T是一种基于ARM架构的处理器内核,它是一个高性能、低功耗的32位RISC(Reduced Instruction Set Computing,精简指令集计算机)处理器。S3C2410内部集成了ARM920T内核,以及其他多种功能模块,如内存控制器、LCD控制器、DMA控制器、USB接口、串行通信接口等,使其适用于各种嵌入式应用,如智能手机、PDA、数字相机等。

ARM920T内核是S3C2410的核心部分,它提供了处理器的主要计算能力。S3C2410的设计允许它在不同的应用中灵活地使用ARM920T内核的功能,同时通过其集成的外围设备来扩展其应用范围。这种设计使得S3C2410成为了一个非常受欢迎的嵌入式系统解决方案。

14.嵌入式系统常用调试方法有几种,各有什么优缺点?

仿真调试

优点:不需要实际的硬件环境,可以在开发过程中随时进行调试,具有一定的调试功能,如断点调试、变量跟踪等。

缺点:无法完全模拟出实际系统的运行情况,尤其在实时性要求较高的系统调试中效果可能不理想。

远程调试:

优点:可以实现远程监控和调试,方便开发人员在实际工作环境之外进行调试,减少调试过程对系统性能的影响。

缺点:可能存在网络延迟和不稳定性的问题,需要保证网络连接的可靠性。

硬件调试:

优点:通过使用硬件仿真器或开发板,可以更加真实地模拟出系统的运行环境,能够检测到一些与硬件相关的问题。

缺点:成本较高,需要专门的硬件设备,并且在调试过程中可能会受到硬件本身的限制。

基于JTAG的调试:

优点:可以在硬件上进行调试,通过JTAG接口可以读取和修改寄存器、内存、设备寄存器等,适合硬件和底层软件的调试。

缺点:需要专门的JTAG调试器硬件,可能不适用于所有的嵌入式系统。

逻辑分析仪:

优点:可以监视系统总线、信号和时序等,分析系统的运行状态和问题,帮助进行调试和解决问题。

缺点:通常用于分析硬件层面的问题,对于软件逻辑错误可能不太有效。

调试输出:

优点:通过在程序中添加调试输出语句,可以输出程序的运行状态、变量值等信息,方便进行调试。

缺点:可能会影响程序的性能,且在复杂系统中可能难以管理大量的输出信息。

调试软件:

优点:提供包括单步调试、断点调试、变量监视等功能,有助于快速定位和解决问题。

缺点:可能需要与特定的硬件或软件环境配合使用,且在没有适当工具支持的情况下效果有限。

15。什么是嵌入式操作系统?常见的嵌入式操作系统有哪些?(列举五个以上),嵌入式操作系统有什么特点?

 嵌入式操作系统(Embedded Operating System,简称EOS)是专门为嵌入式系统设计的操作系统软件,它通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式操作系统具有以下特点:

可裁剪性:支持开放性和可伸缩性的体系结构。

可移植性:能够运行在不同体系结构的处理器和开发板上。

强实时性:通常具有较强的实时性,适用于各种设备的控制。

强紧凑性:代码需要紧凑、精炼,以适应嵌入式系统的资源限制。

高质量代码:要求代码质量可靠,以避免因代码缺陷引发重大损失。

强定制性:可根据目标系统的不同需求进行专业化定制。

标准接口:提供设备统一的驱动接口。

强稳定性、弱交互性:嵌入式系统一旦运行就不需要用户过多干预,因此需要有很强的稳定性。

操作简洁、方便:提供友好的图形GUI和图形界面,追求易学易用。

较强的硬件适应性:可适应多种类型的硬件资源。

常见的嵌入式操作系统包括但不限于:

Linux:开源、可自由定制,广泛应用于各种嵌入式设备。

VxWorks:由Wind River Systems开发,实时性能好,常用于航空航天和国防领域。

FreeRTOS:一个小型的实时操作系统内核,适用于微控制器。

μC/OS:由Micrium开发,是一个可预测的实时操作系统。

QNX:由QNX Software Systems开发,是一个高性能的微内核操作系统,常用于汽车和工业控制系统。

eCos:由Red Hat支持,是一个开源的可配置实时操作系统。

mbed OS:由ARM提供,专为物联网设备设计的操作系统。

RT-Thread:一个来自中国的开源实时操作系统,适用于各种资源受限的设备。

这些操作系统各有特点,选择时通常根据具体的应用需求、硬件平台、开发资源和成本等因素进行考虑。

16.什么是交叉开发环境?简述嵌入式linux系统交叉开发环境的构建过程?

  什么是交叉编译?

在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支

持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代

码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统

(OperatingSystem)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不

同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86

操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简

称。

为什么需要交叉编译?

有时是因为目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特

征;有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器;有时又是因为目的平台还没有建

立,连操作系统都没有,根本谈不上运行什么编译器

嵌入式Linux系统交叉开发环境的构建过程通常包括以下步骤:

准备宿主机:宿主机通常是一个功能强大的计算机,它可以是运行Linux、Windows或macOS的PC。在宿主机上,你需要安装操作系统和必要的软件工具。

安装交叉编译工具链:交叉编译工具链包括编译器、链接器和其他工具,用于将代码编译成能在目标机上运行的程序。这些工具链可以从多个来源获得,包括开源项目和商业产品。例如,对于ARM架构的目标机,你可能需要安装像arm-linux-gnueabi-gcc这样的交叉编译器。

配置开发环境:这包括设置环境变量,如PATH,以包含交叉编译工具链的路径,以及配置其他必要的开发工具,如文本编辑器、版本控制系统和调试器。

下载和配置引导加载程序(Bootloader):引导加载程序是嵌入式系统中的第一个软件,它在系统启动时运行,负责加载主操作系统。

下载和配置Linux内核:内核是操作系统的核心,你需要下载与目标硬件兼容的内核源代码,并进行配置和编译。

构建根文件系统(Root File System):根文件系统包含了操作系统运行所需的所有文件和程序。你可以使用工具如Buildroot或Yocto Project来自动化这个过程。

网络配置:如果需要通过网络进行程序的下载和调试,你可能需要在宿主机上配置TFTP服务器和DHCP服务器。

下载和调试:一旦你构建了操作系统映像,你可以将其下载到目标机上,并使用串行端口、JTAG或其他接口进行调试。

测试和优化:在目标机上测试应用程序,根据需要进行优化,以确保它在有限的资源下高效运行。

17.什么是bootloader?常用的bootloader有那些?bootloader两种工作模式有什么不同,分别应用在那种情况下?

 Linux系统要启动就必须需要一个 bootloader程序,也就说芯片上电以后先运行一段bootloader程序。

这段 bootloader程序会先初始化时钟,看门狗,中断,SDRAM,等外设,然后将 Linux内核从

flash(NAND, NOR FLASH,SD,MMC等)拷贝到SDRAM中,最后启动Linux内核。当然了,

bootloader的实际工作要复杂的多,但是它最主要的工作就是启动 Linux内核。

bootloader和 Linux内核的关系就跟PC上的BIOS和 Windows的关系一样, bootloader就相当于

BIOS。总得来说,Bootloader就是一小段程序,它在系统上电时开始执行,初始化硬件设各、准备好

软件环境,最后调用操作系统内核。

常见的嵌入式Bootloader包括:

U-Boot:一个开源的Bootloader,支持多种处理器架构,如ARM、MIPS、x86等,广泛应用于各种嵌入式设备和系统中。

RedBoot:基于eCos的Bootloader,支持多种处理器架构,提供了丰富的网络功能。

vivi:专门针对ARM9处理器而设计的Bootloader,支持S3C2410x处理器。

Blob:专为StrongARM构架下的LART设计的Bootloader。

ARMboot:一个ARM平台的开源固件项目,支持多种ARM处理器。

Bootloader有两种工作模式:

启动加载模式:这是Bootloader的正常工作模式,Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。

下载模式:在这种模式下,目标机上的Bootloader将通过串口或网络等通信手段从开发主机上下载内核映像和根文件系统映像等到RAM中,然后可再被Bootloader写到目标机上的固态存储媒质中,或者直接进行系统的引导。

启动加载模式通常用于嵌入式产品的发布时,而下载模式多用于开发人员在前期开发的过程中。工作于下载模式下的Bootloader通常都会向它的终端用户提供一个简单的命令行接口。

Bootloader的设计和实现需要考虑硬件的依赖性、系统的稳定性、安全性、大小和效率、硬件兼容性、错误处理、文档和维护等多个方面。

18.简述bootloader在嵌入式系统平台上的移植过程?

  Bootloader的移植过程通常包括以下几个步骤:

获取Bootloader源码:首先需要获取适用于目标硬件平台的Bootloader源码,如U-Boot

配置Bootloader:根据目标板的硬件特性,如CPU类型、内存大小、存储设备等,对Bootloader进行配置。这通常涉及到修改Makefile文件,设置交叉编译器路径,以及调整特定的硬件配置参数。

编译Bootloader:使用交叉编译工具链编译Bootloader源码,生成适用于目标硬件平台的二进制文件。

烧写Bootloader:将编译生成的Bootloader二进制文件烧写到嵌入式设备的非易失性存储器中,如NAND Flash或NOR Flash。

硬件调试:在目标硬件上运行Bootloader,进行调试,确保它能够正确初始化硬件并加载操作系统。

添加驱动支持:如果目标板上有特殊的硬件设备,可能需要在Bootloader中添加相应的驱动支持。

优化和定制:根据实际需求对Bootloader进行优化和定制,如添加启动菜单、支持网络功能等。

19.说明linux平台下用C语言软件开发方法?(说明需要用到那些工具)

 在Linux平台下,使用C语言进行软件开发通常遵循以下方法和步骤,并且需要使用一系列的工具来辅助开发:

文本编辑器:

用于编写C语言源代码。常用的文本编辑器包括 Vim、Emacs、Nano、Gedit、Visual Studio Code 等。

编译器:

用于将C语言源代码编译成可执行程序。GCC(GNU Compiler Collection)是Linux平台上最常用的C语言编译器。

调试器:

用于调试程序,查找和修复代码中的错误。GDB(GNU Debugger)是Linux平台上常用的调试器。

版本控制系统:

用于代码版本控制,方便多人协作开发和代码变更管理。常用的版本控制系统包括 Git、SVN(Subversion)等。

构建系统或Make工具:

用于自动化编译过程,处理源文件的依赖关系。Make工具通过读取Makefile文件来执行编译任务。

代码分析工具:

用于分析代码质量,检查潜在的问题。例如 Valgrind 用于内存调试,Cppcheck 用于静态代码分析。

性能分析工具:

用于分析程序的性能,找出性能瓶颈。例如 GProf、Perf 等。

文档生成工具:

用于生成代码文档,如 Doxygen 可以为C语言代码生成文档。

图形用户界面(GUI)工具:

如果开发需要图形用户界面的应用程序,可能会使用如 GTK+、Qt(通过其开源版本Qt5)等工具。

包管理器:

用于安装和管理开发所需的库文件和依赖。例如,APT、YUM、Pacman 等。

20什么是SOC?

  SOC(System on Chip),指的是片上系统,MCU只是芯片级的芯片,而SOC是系统级的芯片,它既

MCU(51,avr)那样有内置RAM,ROM同时又像MPU(arm)那样强大的,不单单是放简单的代码,

可以放系统级的代码,也就是说可以运行操作系统(将就认为是MCU集成化与MPU强处理力各优点二合

一)。

21。嵌入式系统有什么特点?

22. 什么是交叉编译工具链?

 

23.简述嵌入式Linux系统根文件系统的作用。

 什么是根文件系统?

根文件系统首先是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,但是相对

于普通的文件系统,它的特殊之处在于,它是内核启动时所挂载(mount)的第一个文件系统,内核代

码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本

(如rcS,inittab)和服务加载到内存中去运行,里面包含了 Linux系统能够运行所必需的应用程序、库

等,比如可以给用户提供操作 Linux的控制界面的shell程序、动态连接的程序运行时需要的glibc库等。

我们要明白文件系统和内核是完全独立的两个部分。在嵌入式中移植的内核下载到开发板上,是没有办

法真正的启动Linux操作系统的,会出现无法加载文件系统的错误。

根文件系统为什么这么重要?

根文件系统之所以在前面加一个”根“,说明它是加载其它文件系统的”根“,那么如果没有这个根,其它的

文件系统也就没有办法进行加载的。根文件系统包含系统启动时所必须的目录和关键性的文件,以及使

其他文件系统得以挂载(mount)所必要的文件。例如:

init进程的应用程序必须运行在根文件系统上。

根文件系统提供了根目录“/”。

linux挂载分区时所依赖的信息存放于根文件系统/etc/fstab这个文件中。

shell命令程序必须运行在根文件系统上,譬如ls、cd等命令。

总之:一套linux体系,只有内核本身是不能工作的,必须要rootfs(上的etc目录下的配置文件、/bin

/sbin等目录下的shell命令,还有/lib目录下的库文件等)相配合才能工作。

25.名词解释ARM

   答:ARM(Advanced RISC Machine的缩写),ARM可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可

以认为是一种技术的名字,全名是Advanced RISC Machine。该公司1990年11月成立于英国剑桥,主要出售芯片设计技

术的授权,是苹果电脑,Acorn电脑集团和VLSI Technology的合资企业。Acorn曾推出世界上首个商用单芯片RISC处

理器,而苹果电脑当时希望将RISC技术应用于自身系统,ARM微处理器新标准因此应运而生。

26.CISC

  答:复杂指令系统计算机 CISC(Complex Instruction Set Computer)依靠增强指令的功能,增加指令系统的复杂程度来

提高计算机系统的性能。特点:

(1) 指令系统复杂庞大,指令数目一般多达200~300条

(2) 指令格式多,指令字长不固定,使用多种不同的寻址方式。

(3) 可访存指令不受限制。

(4) 各种指令的执行时间和使用频率相差很大.

(5) 大多数采用微程序控制器.

 

27。RISC:(Reduced Instruction Set Computer)精简指令系统,简化指令功能及优化的编译程序来提高计算机系统的性能。

特点:

(1) 选取使用频率高的简单指令以及很有用但又不复杂的指令组成指令系统.

(2) 指令数少,指令长度一致,指令格式少,寻址方式少,指令总数大都不超过100条。

(3) 以寄存器 — 寄存器方式工作,只有取数/存数(LOAD/STORE)指令访问存储器,其余指令的操作都在寄存器之间进行

(4) 采用指令流水线调度,使大部分指令在一个机器周期内完成。

(5) 使用较多的通用寄存器以减少访存。

(6) 以组合电路控制为主,不用或少用微程序控制.

采用优化编译技术,力求高效率支持高级语言的实现。

28.JTAG

  答:JTAG(Joint Test Action Group;联合测试行动小组)是一种国际标准测试协议(IEEE 1149。1兼容),主要用于芯

片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,

分别为模式选择、时钟、数据输入和数据输出线。 JTAG最初是用来对芯片进行测试的,基本原理是在器件内部定义一个TAP

(Test Access Port;测试访问口)通过专用的JTAG测试工具对进行内部节点进行测试。JTAG测试允许多个器件通过JTAG

接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。现在,JTAG接口还常用于实现ISP(In—System

Programmable�在线编程),对FLASH等器件进行编程。JTAG编程方式是在线编程,传统生产流程中先对芯片进行预编程

现再装到板上因此而改变,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。JTAG接口可对

PSD芯片内部的所有部件进行编程

29。Bootloader

答:简单地说,Boot Loader 就是在操作系统内核运行之前运行的一段小程序,程序的主要功能是初始化系统基本硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境.

30.U-boot

 答:U—Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目.从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U—Boot源码的注释中能体现这一点。但是U-Boot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。U—boot支持众多的硬件平台,是应用非常广泛的bootloader

31.make

 答:make是Linux下的工具软件,make工具与makefile文件配合使用,实现Linux系统下工程管理,实现程序编译的自动

化.

 

32。makefile

 答:Linux系统下一种文件,该文件与Linux下的工具make配合使用,实现Linux下工程项目管理,实现程序编译的自动化。


http://www.kler.cn/news/308902.html

相关文章:

  • 【JavaWeb】利用IDEA2024+tomcat10配置web6.0版本搭建JavaWeb开发项目
  • Encountered error while trying to install package.> lxml
  • es6中set和map的区别
  • C++速通LeetCode简单第17题-爬楼梯
  • PostgreSQL维护——解决索引膨胀和数据死行
  • 运维的基本概念:服务器和网络基础知识
  • 瑞星微RK芯片的Buildroot构建系统镜像
  • 【Gateway】Gateway Filter Factories
  • Visual Studio 2019/2022 IntelliCode(AI辅助IntelliSense)功能介绍
  • 【SpringBoot】调度和执行定时任务--Spring Task(超详细)
  • 数据结构 - 树与二叉树
  • [强化你的LangChain工具创建技能:从基础到进阶]
  • C语言 | Leetcode C语言题解之第413题等差数列划分
  • c语言题目猜凶手问题
  • Vue2中父子组件通信双向绑定
  • 【Java】【力扣】83.删除排序链表中的重复元素
  • TensorRT-LLM——优化大型语言模型推理以实现最大性能的综合指南
  • react18基础教程系列-- 框架基础理论知识mvc/jsx/createRoot
  • 预训练蛋白质语言模型ESM-2保姆级使用教程
  • C++设计模式(更新中)
  • 数据结构:(OJ141)环形列表
  • 李宏毅2023机器学习HW15-Few-shot Classification
  • 部分动态铜皮的孤岛无法删除。报错
  • Linux下的CAN通讯
  • 深度学习中实验、观察与思考的方法与技巧
  • JavaScript:驱动现代Web应用的关键引擎及其与HTML/CSS的集成
  • 数模原理精解【11】
  • el-table 如何实现行列转置?
  • C#读取应用配置的简单类
  • 软件测试工程师面试整理-常见面试问题