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

网站建设书籍在线阅读专注专业网站建设

网站建设书籍在线阅读,专注专业网站建设,wordpress 恢复备份,网站建设 .北京蓝纤文章目录 什么是嵌入式开发交叉编译查看一些GCC文件夹 调试器GDB相关语法命令 模拟器QEMUQEMU的安装和使用项目构造工具MakeMakeFile的构成make的运行 练习4-1练习4-2练习4-3 什么是嵌入式开发 程序跑到开发板上,或者说运行到硬件上 交叉编译 简单理解交叉编译来说…

文章目录

  • 什么是嵌入式开发
  • 交叉编译
    • 查看一些GCC文件夹
  • 调试器GDB
    • 相关语法命令
  • 模拟器QEMU
  • QEMU的安装和使用
  • 项目构造工具Make
    • MakeFile的构成
    • make的运行
  • 练习4-1
  • 练习4-2
  • 练习4-3

什么是嵌入式开发

程序跑到开发板上,或者说运行到硬件上

在这里插入图片描述

交叉编译

简单理解交叉编译来说就是生成的程序不在本机上运行,而在与本机架构不同的计算机上运行
build:生成编译程序的计算机
host:运行build计算机生成的编译程序的计算机
target:就是编译结果运行的地方
在这里插入图片描述

查看一些GCC文件夹

在这里插入图片描述
->是符号链接
在这里插入图片描述

在这里插入图片描述

调试器GDB

GDB调试包括2个程序:gdb程序和被调试程序。根据这2个程序是否运行在同一台电脑中,可以把GDB的调试模型分为2种:
本地调试:调试程序和被调试程序运行在同一台电脑中
gdb 运行起来后,它会先fork一个子进程,被调试的程序会运行在这个单独的子进程中,gdb这个程序也会单独运行在一个独立的进程里。然后这两个进程通过独特的ptrace系统调用建立连接。

远程调试:调试程序运行在一台电脑中,被调试程序运行在另一台电脑中
在目标机会有一个gdbserver的服务,gdb会与gdbserver交互,由gdbserver代理我们的调试过程,被调试的程序是运行在目标机上的,而调试是在本机上的。两台机器通过网络连接

在这里插入图片描述

相关语法命令

在这里插入图片描述

p <变量名称>
Print的简写,显示指定变量(临时变量或全局变量)的值。s
执行一行源程序代码,如果此行代码中有函数调用,则进入该函数。相当于其它调试器中的“Step Into (单步跟踪进入)”。
这个命令必须在有源代码调试信息的情况下才可以使用(GCC编译时使用“-g”参数)。si
si命令类似于s命令,但针对汇编指令。n
执行一行源程序代码,此行代码中的函数调用也一并执行。相当于其它调试器中的“Step Over (单步跟踪)”。
这个命令必须在有源代码调试信息的情况下才可以使用(GCC编译时使用“-g”参数)。ni
ni命令类似于n命令,但针对汇编指令。c
Continue的简写,继续执行被调试程序,直至下一个断点或程序结束。l
List的简写,列出当前位置之后的10行代码;list line_number: 列出line_number之后的十行代码。

模拟器QEMU

在这里插入图片描述
此时是模拟用户层的环境(类似操作系统) llk运行在用户层

qemu-riscv32 ./llk  #在qemu提供的环境上运行llk

开发操作系统时要模拟系统级别的层次(类似硬件层次)

QEMU的安装和使用

在这里插入图片描述

项目构造工具Make

以自动化的方式编译程序
-f指定makefile文件
在这里插入图片描述

MakeFile的构成

在这里插入图片描述
.DEFAULT_GOAL的特殊变量,可用于告知如果在命令行中未指定目标,(就是只make时候) 应该构建哪个目标(或目标)。否则,Make会简单地使它遇到的第一个目标。
.PHONY:伪目标。伪目标是这样一个目标:它不代表一个真正的文件名,在执行make时可以指定这个目标来执行所在规则定义的命令,有时也可以将一个伪目标称为标签。伪目标通过PHONY来指明。 PHONY定义伪目标的命令一定会被执行
对于到下图中就是clean的里面的命令不管clean是否存在,都会执行

在这里插入图片描述

$(SRCS_ASM:.S=.o) 就是将SRCS_ASH变量里面的.S都替换为.o

make的运行

差不多就是一步步套娃
在这里插入图片描述

练习4-1

熟悉交叉编译概念,使⽤ riscv gcc 编译代码并使⽤ binutils ⼯具对⽣成的⽬标文件和可执⾏文件(ELF 格式)
进⾏分析。具体要求如下:

  • 编写⼀个简单的打印 “hello world!” 的程序源文件:hello.c
  • 对源文件进⾏编译,⽣成针对⽀持 rv32ima 指令集架构处理器的⽬标文件 hello.o
  • 查看 hello.o 的文件的文件头信息。
  • 查看 hello.o 的 Section header table。
  • 对 hello.o 反汇编,并查看 hello.c 的 C 程序源码和机器指令的对应关系。

-march=rv32ima:指定生成后的32位可执行文件可以运行在支持 i 整数指令集 m 乘除法指令集 a 原子操作指令集

-mabi=ilp32:一个长整数时多少位

riscv64-unknown-elf-gcc -march=rv32ima -mabi=ilp32 llk.c -o llk
file llk
qemu-riscv32 ./llk  #在qemu提供的环境上运行llk

练习4-2

基于 练习 4-1 继续熟悉 qemu/gdb 等⼯具的使⽤,具体要求如下:

  • 将 hello.c 编译成可调式版本的可执⾏程序 a.out
  • 先执⾏ qemu-riscv32 运⾏ a.out。
  • 使⽤ qemu-riscv32 和 gdb 调试 a.out。

练习4-3

  • ⾃学 Makefile 的语法,理解在 riscv-operating-system-mooc 仓库的根⽬录下执⾏ make 会发⽣什么。
SECTIONS = \code/asm \code/os \.DEFAULT_GOAL := all
all :@echo "begin compile ALL exercises for assembly samples ......................."for dir in $(SECTIONS); do $(MAKE) -C $$dir || exit "$$?"; done@echo "compile ALL exercises finished successfully! ......".PHONY : clean
clean:for dir in $(SECTIONS); do $(MAKE) -C $$dir clean || exit "$$?"; done.PHONY : slides
slides:rm -f ./slides/*.pdfsoffice --headless --convert-to pdf:writer_pdf_Export --outdir ./slides ./docs/ppts/*.pptx
  • \表示换行。只有执行对应的Makefile命令的shell语句时才会进入shell环境,每行命令独立,每行都是单独的shell,所以上一行定义的shell变量并不适用于下一行。当然如果是使用了\来合并行就可以摆脱这个限制了。就是使之成为一条指令,或者是一个shell执行的。图中SECTIONS后的/可以理解就是把下面的和上面的练成一行。不然make执行时,每行都是一个单独的shell执行,这样SECTIONS就没有成功赋值。加了的话shell就执行三行,就可以成功赋值了
  • for in ; do ; done循环语句 在makefile中的shell变量要用2个$号表示变量名称, 对应表示dir
  • make -C 目录 表示进入目录后执行make
  • ||表示前面部分指令执行失败后执行后面的指令

所以大概整个make就是进入code/asm 和code/os目录执行make,然后/code/asm 下对应的makefile又是进入各个文件执行make,/code/os也一样

http://www.yayakq.cn/news/514427/

相关文章:

  • jq网站模板做网站原型现成的框架
  • 有没有卖设计的网站网站建设下拉导航栏
  • 企业做电商网站有哪些动画制作专业就业前景
  • 筑巢网络官方网站门户网站建设评标办法
  • 做网站推广需要哪些知识深圳企业网页设计公司
  • 公司制作一个网站价格洛可可设计公司logo
  • 信息化建设 公司网站金溪那里可以做网站
  • 网站建设开场白wordpress成绩查询插件
  • 北京有一个公司打电话做网站认证关键词优化怎么优化
  • 点样用外网访问自己做的网站免费学校网站建设
  • 淘宝网站建设哪个类目做一晚水泥工歌曲网站
  • linux做网站1G内存够不自己能开发app软件吗
  • php本地建站工具3g版和wap网站
  • 高校建设主流网站网页ui设计尺寸
  • 贸易网站建设网哪些网站可以在线做动图
  • 网络服务商的责任保定网站优化排名
  • 手机ps软件如何做ppt下载网站彩票网站建设成本
  • 松岗做网站哪家便宜鲁权屯网站建设
  • 网站开发的关系图和e-r图网站开发行业标准
  • 怎么建设银行网站打不开如何快速推广app
  • 公司手机网站效果图淮北哪有做网站的
  • 安徽区块链虚拟币网站开发方案mxd 主题Wordpress
  • 网站开发工具c医院建筑设计案例
  • 网站模块怎么恢复手工制作国庆节作品图片
  • 苏州网站建设网媒体资源网官网
  • 网站备案密码是什么样的西安的商城网站
  • 广州网络营销首荐佐兰网络vip徐州整站优化
  • 法治网站的建设整改措施wordpress 多重筛选
  • 北京市建设工程发包承包交易中心网站个网站能申请贝宝支付接口
  • 大数据营销笔记本人员优化是什么意思