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

淘宝客商城网站建设linux运维是必死之路

淘宝客商城网站建设,linux运维是必死之路,做网站可以做哪些方面的,营销型企业网站建设包括什么目录 文章传送门 一、什么是Bootloader 二、简单的启动程序 三、上板测试 文章传送门 开发一个RISC-V上的操作系统#xff08;一#xff09;—— 环境搭建_riscv开发环境_Patarw_Li的博客-CSDN博客 开发一个RISC-V上的操作系统#xff08;二#xff09;—— 系统引导…目录 文章传送门 一、什么是Bootloader 二、简单的启动程序 三、上板测试 文章传送门 开发一个RISC-V上的操作系统一—— 环境搭建_riscv开发环境_Patarw_Li的博客-CSDN博客 开发一个RISC-V上的操作系统二—— 系统引导程序Bootloader_Patarw_Li的博客-CSDN博客 ​​​​​​​开发一个RISC-V上的操作系统三—— 串口驱动程序UART_Patarw_Li的博客-CSDN博客 一、什么是Bootloader Bootloader是cpu在上电后执行的第一段代码用于初始化各类资源并且跳转到主程序上执行比如初始化sp寄存器将rom中的数据搬运到ram上清零bss段等等。 百度百科的词条中这样解释Bootloader“Bootloader是嵌入式系统在加电后执行的第一段代码在它完成CPU和相关硬件的初始化之后再将操作系统映像或固化的嵌入式应用程序装载到内存中然后跳转到操作系统所在的空间启动操作系统运行”。 一般系统引导程序都是固化在flash中因为ram断电即失上电后先执行引导程序再跳转到主程序上执行 引导程序大多都是使用汇编语言编写毕竟涉及到一些寄存器操作下面我会写一个简单的启动程序来帮助我们初始化栈指针sp、并且跳转到主程序执行。 二、简单的启动程序 可以先去我的gitee仓库下载代码本节代码在 00_START 目录下下 riscv_os: 一个RISC-V上的简易操作系统 代码结构如下  inc目录下存放头文件kernel.c为主程序引导程序最终会跳转到这里执行start.S为引导程序Makefile为自动化构建脚本。 先来看看start.S里的内容 #include inc/platform.h# size of stack is 256 bytes.equ STACK_SIZE, 256.global _start.text _start:la sp, RAM STACK_SIZE # set the initial stack pointer to 0x00001100 (0x00001000 256)j start_kernel # jump to kernel.end # end of file .equ类似于C语言里面的宏将STACK_SIZE设置成256。.global关键字用来让一个符号对链接器可见可以供其他链接对象模块使用告诉编译器后续跟的是一个全局可见的名字变量/函数名。.text指定后续内容为代码段。_start是一个符号是汇编程序默认入口标号。也是编译、链接后程序的起始地址。 由于程序是通过加载器来加载的必然要找到 _start名字的函数因此 _start必须定义成全局的以便存在于编译后的全局符号表中供其他程序如加载器寻找到。la  sp, RAM STACK_SIZE 将栈指针寄存器sp的值初始化为RAM STACK_SIZE0x00001000 256。 j   start_kernel 跳转到start_kernal 主程序中执行。 为什么用大写的.S后缀而不用小写的.s呢因为使用GCC准确说是GCC调用了as汇编器处理汇编代码时汇编文件的后缀有两种.s与.S。这两种文件都是汇编代码其区别在于 .s格式的汇编文件中只能包含纯粹的汇编代码汇编器只对其进行汇编操作没有预处理操作.S格式的汇编文件中还可以使用预处理命令汇编器会先进行预处理然后再进行汇编。 而我们的启动代码包含了头文件所以就需要用大写的.S结尾的汇编文件了。 然后是Makefile里面的内容 CROSS_COMPILE riscv64-unknown-elf- CFLAGS -nostdlib -fno-builtin -marchrv32im -mabiilp32 -g -WallCC ${CROSS_COMPILE}gcc OBJCOPY ${CROSS_COMPILE}objcopy OBJDUMP ${CROSS_COMPILE}objdumpSRCS_ASM \start.S \SRCS_C \kernel.c \OBJS $(SRCS_ASM:.S.o) OBJS $(SRCS_C:.c.o).DEFAULT_GOAL : all all: os.elf# start.o must be the first in dependency! os.elf: ${OBJS}${CC} ${CFLAGS} -o os.elf $^${OBJCOPY} -O binary os.elf os.bin%.o : %.c${CC} ${CFLAGS} -c -o $ $%.o : %.S${CC} ${CFLAGS} -c -o $ $.PHONY : code code: all${OBJDUMP} -S os.elf | lessclean:rm -fr *.o *.bin *.elf 该脚本的工作是先把start.S和kernel.c编译成start.o和kernel.o目标文件然后再将start.o和kernel.o目标文件链接成os.elf文件最后再通过objcopy将os.elf文件变成二进制os.bin文件os.bin文件就是最后我们要放到板子上跑的程序。 可能有人会问为什么不直接把elf文件放到处理器上去运行下面对elf格式的文件做一些简单的介绍 下面是elf文件的格式可以看到除了中间一部分正文段和数据段以外还有一些其他的段比如ELF Header里面描述了体系结构和操作系统等基本信息并指出Section Header Table和Program Header Table在文件中的什么位置Program Header Table在汇编和链接过程中没有用到所以是可有可无的Section Header Table中保存了所有Section的描述信息。 但是cpu并不能识别这些信息只有一些特定的操作系统才能识别这些信息所以这些信息对处理器来说是没有用的而objcopy指令正是帮我们去掉这些处理器无法识别的内容留下的内容即为处理器可以识别的内容。 Makefile脚本的用法 1. 生成二进制.bin文件执行make即可 make 生成的os.bin即为我们要烧录到板子上运行的程序。 2. 查看二进制文件的os.elf的汇编代码 make code 使用这个指令可以查看每条C语句对应的汇编代码以及每条指令的地址。  3. 清除所有生成的文件 make clean 最后是kernel.c里面的内容这里面即可存放我们要运行的内容还是以我们的流水灯程序为例子 void start_kernel(void){uint8_t *gpio_data (uint8_t *)0x20000004;while(1){// 第一个灯亮起*gpio_data 1;for(int i 0; i 1000000; i); // delay// 第二个灯亮起*gpio_data 2;for(int i 0; i 1000000; i); // delay// 第三个灯亮起*gpio_data 4;for(int i 0; i 1000000; i); // delay// 第四个灯亮起*gpio_data 8;for(int i 0; i 1000000; i); // delay}while(1){}; // stop here! } 这样引导程序和主程序都准备完毕了我们接下来就可以上板实验了。 三、上板测试 要进行上板测试首先得按照我前面的文章烧录riscv处理器程序到板子上 RISC-V处理器的设计与实现三—— 上板验证基于野火征途Pro开发板_Patarw_Li的博客-CSDN博客 项目仓库地址cpu_prj: 一个基于RISC-V指令集的CPU实现 然后执行make生成os.bin文件后通过python串口发送程序serial_utils目录下将os.bin文件烧录到处理器的memory上按住key1不动烧录完后松开烧录后即可看到流水灯现象。  遇到问题欢迎加群 892873718 交流~
http://www.w-s-a.com/news/292718/

相关文章:

  • 怎样做旅游公司的网站泉州网站建设方案优化
  • 手机网站页面范例个人网站做淘宝客违规
  • 做一套网站开发多少钱SEO做得最好的网站
  • 咸宁做网站的公司那家便宜福建建设注册管理中心网站
  • 网站建设工作汇报黑科技广告推广神器
  • 淘宝做首页热点的什么网站徐州建设安全监督网站
  • 正规的镇江网站建设广州有什么好玩的东西
  • 丹阳网站设计公司网站开发 0755
  • 百度网页版浏览器网址找文网优化的技术团队
  • 信息网站怎么做做儿童网站赚钱吗
  • 帝国cms 网站迁移个人网站备案备注
  • 青岛做网站推广怎样做网站才不能被攻破
  • 使用网站模板快速建站教案杂志wordpress主题 无限加载
  • 南宁南宁做网站南安网络推广
  • 旌阳移动网站建设微网站 杭州
  • 合肥网站开发如何用VS2017做网站
  • 网站 制作公司福州企业建站软件
  • 网站推广主要方法一流的盘锦网站建设
  • 给个网站好人有好报2021东莞专业网站营销
  • 中国网站优化哪家好制作网站页面
  • 网站站内优化度娘网站灯笼要咋做呢
  • 怎么制作一个简单的网站七牛云做网站
  • 厦门建网站哪家好求网站建设合伙人
  • 营销型网站制作步骤五个宁波依众网络科技有限公司
  • 外贸响应式网站建设临清建设局网站
  • 手机怎样使用域名访问网站个人做旅游网站的意义
  • 西部数码域名网站模板网站建设怎么管理业务员
  • o2o手机维修网站那个公司做的电子网站风格设计
  • 网站建设预算计算方法什么是网络营销战略?网络营销战略有哪些基本类型
  • 无锡做网站公司多少钱网站备案方法