1 启动文件和链接脚本

龙芯开发板的板级代码位于:device\loongson\ls1c300b_hrst 文件夹
其中,启动文件位于 device\loongson\ls1c300b_hrst\src\lib 文件夹下,文件名:
start.S 文件
链接脚本:device\loongson\ls1c300b_hrst 文件夹下
ld.script 文件

可以看到链接的地址是 0x80200000,也就是说我们编译出来的固件要加载到这个地址运行。

2 系统启动流程

代码启动流程图如下,首先 start 函数会做芯片相关初始化,然后跳转到main函数,接下来会调用bsp_init进行板级初始化,包括串口初始化等,接下来进入 run_los 函数,进行LOS_KernelInit内核初始化,create_test_task创建测试线程,最后调用LOS_Start启动内核。
流程如下:

3 main函数

启动文件 start.S 中会执行CPU相关的初始化,例如内存初始化、代码拷贝、BSS段清零等。最后会执行main函数,如下:

我们来看下main函数:

可以看到main函数首先执行 bsp_init 进行板级初始化,
bsp_init 函数主要执行串口初始化、硬浮点初始化,中断初始化等,最后打印CPU时钟:

clk_print_all 函数打印的CPU时钟信息可以在通过打印看到,如下:

执行完 bsp_init 初始化后,会开始执行 run_los 执行openharmony内核,代码如下:

create_test_task 会根据相关的宏创建对应的测试线程,开发者可以根据需要打开相应测试:

龙芯OpenHarmony课程 【2】启动分析相关推荐

  1. 龙芯OpenHarmony课程 【1】编译烧录

    代码仓库: OpenHarmony龙芯1C300B: OpenHarmony龙芯1C300B 开源代码 1 下载交叉编译工具链 龙芯1C300编译器用来编译鸿蒙系统 龙芯1C库可以在Linux下与Wi ...

  2. 龙芯OpenHarmony课程 【4】 按键中断

    1 按键中断线程 按键中断相关代码位于device\loongson\ls1c300b_hrst\test\sample_key_irq.c文件中. 首先create_key_irq_task 创建一 ...

  3. 龙芯OpenHarmony课程 【3】GPIO操作 点亮LED

    1 LED线程 LED相关代码位于device\loongson\ls1c300b_hrst\test\sample_gpio.c文件中. 首先create_gpio_task创建一个线程,该线程为 ...

  4. 龙芯Mips平台vmlinux文件分析

    龙芯Mips平台vmlinux文件分析 一.文件格式 1. 文件类型 2. 使用场景 二.结构内容描述 1. ELF header(ELF 头) 2. 字符串表表项 Entry 3. 读取字符串表 S ...

  5. 龙芯可以运行linux吗,开源的龙芯主板可顺利启动Linux系统

    软件开源很常见,但是你见过硬件开源吗?国内也有.据了解,龙芯俱乐部和广州龙芯经过3个版本的研发,龙芯1C开源主板已经调试成功,可以顺利启动Linux系统了. 开源龙芯主板是一款以开源方式推广的龙芯嵌入 ...

  6. 首发 成功移植OpenHarmony到龙芯开发板,代码开源

    通过一周的时间,我们成功地将OpenHarmony 3.0移植到智龙开发板上,板载芯片1C300B. 1C300是龙芯基于 GS232 处理器核的高性价比单芯片系统,内置浮点处理单元,支持多种类型内存 ...

  7. 龙芯服务器cpu支持最大数量,龙芯启动全国六个适配中心:加速生态建设

    最近,国产CPU处理器一浪高过一浪,先是飞腾宣布了全方位的生态系统合作,然后龙芯中科发布了最新一代产品,性能直追AMD挖掘机架构,同时操作系统.软件应用针对国产CPU的适配支持也越来越完善. 今天,龙 ...

  8. 【转帖】龙芯将两款 CPU 核开源,这意味着什么?

    龙芯将两款 CPU 核开源,这意味着什么? https://www.oschina.net/news/78316/loongson-open-source-two-cpu-core 文章挺不错的也讲了 ...

  9. 龙芯将两款 CPU 核开源,这意味着什么?

    10月21日,教育部计算机类教学指导委员会.中国计算机学会教育专委会将2016 CNCC期间在山西太原举办"面向计算机系统能力培养的龙芯CPU高校开源计划"活动,在活动中,龙芯中科 ...

最新文章

  1. oracle-pl/sql之三
  2. http://www.cnblogs.com/amboyna/archive/2008/03/08/1096024.html
  3. C# random helper class
  4. c语言二fseek从文件头移动_编程C语言文件的随机读写
  5. 中年女性凹“少女感”引发不适,90后最在意什么?
  6. 【旅行】——出发!露营去。
  7. JAVA入门级教学之(你是否理解HelloWorld的这段经典的代码的注释)
  8. Java ClassLoader setClassAssertionStatus()方法与示例
  9. 深入浅出OOP(一): 多态和继承(早期绑定/编译时多态)
  10. java filterconfig_使用FilterConfig读取配置文件的信息 ---学习笔记
  11. 微信小程序--优购商城项目(6)
  12. oracle中substr () in,Oracle中的substr()函数使用详解及应用
  13. Java基础项目 开发团队分配管理系统
  14. 一元二次求解matlab程序,规范MATLAB编程实例——求解一元二次方程
  15. Netty实现聊天室
  16. 一种ESP8266使用MQTT连接阿里云和云Web方法
  17. Fall 2011 CS193P Assignment 2: 可编程计算器答案
  18. 阿里云SLB负载均衡
  19. 一段话中手机号中间四位做特殊处理
  20. c语言输入一个三位数由小到大排序,c语言程序设计练习题.doc

热门文章

  1. 英语时态+语态(基础框架)
  2. Python 程序设计与算法基础教程(第二版)第四章上机实践
  3. Python——sum()、.sum(axis=0)和.sum(axis=1)函数的使用
  4. AOPA考证流程与考试步骤(非常详细)
  5. 人工智能算法需要运用计算机吗,什么是人工智能算法.ppt
  6. 找不到模块“axios”或其相应的类型声明(vite)
  7. Python re 正则:抓取网页上电驴/磁力/迅雷链接
  8. 智能手环功能模块设计_智能养老手环设计方案
  9. 云安对于物理服务器监控
  10. 截面空间计量模型(Stata)