📁
loongsoncsprj2020-manual
  • 1. 简介
  • 1.1龙芯实验箱介绍
  • 1.2实验箱测试流程
  • 2. 基于FPGA的MIPS32SCPU实现
    • 2.1 Vivado开发环境
      • 2.1.1 Vivado环境的安装
      • 2.1.2 Vivado的基本使用
      • 2.1.3 Vivado和实验板的连接
    • 2.2 基于soc_up的移植过程
      • 2.2.1 Flash的烧录
      • 2.2.2 FPGA固化方法
      • 2.2.3 串口工具的使用
      • 2.2.4 TFTP服务器的搭建及使用
      • 2.2.5 Liunx内核的移植过程
    • 2.3 ROM的初始化
      • 2.3.1 ROM的初始化过程
      • 2.3.2 测试程序编译流程
    • 2.4 基于NaiveMIPS的移植过程
      • 2.4.1 NavieMIPS的综合运行
      • 2.4.2 supervisor的启动过程
      • 2.4.3 U-Boot的启动过程
      • 2.4.4 ucore的启动过程
    • 2.5 ILA的使用方法
  • 3. MIPS32S CPU上的ucore教学操作系统
    • 3.1 make 命令的使用
    • 3.2 交叉工具链介绍
    • 3.3 交叉编译环境的配置
    • 3.4 U-Boot的移植过程
    • 3.5 QEMU介绍
    • 3.6 ucore编译方法
    • 3.7 龙芯编译环境配置
    • 3.8 对supervisor交互程序term.py的修改
  • 4. MIPS32S上的C0编译器实验
  • 系统集成
Powered by GitBook
On this page
  • 编译 SoC_up 上的 ucore
  • 获取源码
  • 根据环境修改编译选项
  • 编译

Was this helpful?

  1. 3. MIPS32S CPU上的ucore教学操作系统

3.6 ucore编译方法

Previous3.5 QEMU介绍Next3.7 龙芯编译环境配置

Last updated 5 years ago

Was this helpful?

编译 SoC_up 上的 ucore

获取源码

源码位于的for-ls232-soc_up分支下。

根据环境修改编译选项

由于编译环境不同,需要在Makefile中更正选项。修改的选项有:

  1. GCCPREFIX

将 GCCPREFIX 修改为适合交叉编译环境的值。如果使用的是Debian/Ubuntu系统提供的工具链,可以将其改为mipsel-linux-gnu-。

  1. CFLAGS

向CFLAGS添加选项: 1. -fno-builtin-fprintf 源代码中的部分函数与C标准库函数名称重合。GCC可能将这些函数优化为其他未实现的C库函数。若编译失败应检查是否有其他函数出现类似的现象。 2. -fno-pic -mno-abicalls -mno-shared MIPS的ABI要求gp寄存器的值必须有效,导致内核以及用户态进程在初始化时因gp无效而出错。

  1. 汇编器选项:

Makefile中没有为汇编器设置参数方便调整,需要找到这些部分并添加-fno-pic -mno-abicalls -mno-shared。

编译

在源代码目录执行make即可编译。flash.img即指向编译结果。

https://github.com/z4yx/ucore-thumips
Patch文件