龙芯OpenHarmony课程 【2】启动分析
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】启动分析相关推荐
- 龙芯OpenHarmony课程 【1】编译烧录
代码仓库: OpenHarmony龙芯1C300B: OpenHarmony龙芯1C300B 开源代码 1 下载交叉编译工具链 龙芯1C300编译器用来编译鸿蒙系统 龙芯1C库可以在Linux下与Wi ...
- 龙芯OpenHarmony课程 【4】 按键中断
1 按键中断线程 按键中断相关代码位于device\loongson\ls1c300b_hrst\test\sample_key_irq.c文件中. 首先create_key_irq_task 创建一 ...
- 龙芯OpenHarmony课程 【3】GPIO操作 点亮LED
1 LED线程 LED相关代码位于device\loongson\ls1c300b_hrst\test\sample_gpio.c文件中. 首先create_gpio_task创建一个线程,该线程为 ...
- 龙芯Mips平台vmlinux文件分析
龙芯Mips平台vmlinux文件分析 一.文件格式 1. 文件类型 2. 使用场景 二.结构内容描述 1. ELF header(ELF 头) 2. 字符串表表项 Entry 3. 读取字符串表 S ...
- 龙芯可以运行linux吗,开源的龙芯主板可顺利启动Linux系统
软件开源很常见,但是你见过硬件开源吗?国内也有.据了解,龙芯俱乐部和广州龙芯经过3个版本的研发,龙芯1C开源主板已经调试成功,可以顺利启动Linux系统了. 开源龙芯主板是一款以开源方式推广的龙芯嵌入 ...
- 首发 成功移植OpenHarmony到龙芯开发板,代码开源
通过一周的时间,我们成功地将OpenHarmony 3.0移植到智龙开发板上,板载芯片1C300B. 1C300是龙芯基于 GS232 处理器核的高性价比单芯片系统,内置浮点处理单元,支持多种类型内存 ...
- 龙芯服务器cpu支持最大数量,龙芯启动全国六个适配中心:加速生态建设
最近,国产CPU处理器一浪高过一浪,先是飞腾宣布了全方位的生态系统合作,然后龙芯中科发布了最新一代产品,性能直追AMD挖掘机架构,同时操作系统.软件应用针对国产CPU的适配支持也越来越完善. 今天,龙 ...
- 【转帖】龙芯将两款 CPU 核开源,这意味着什么?
龙芯将两款 CPU 核开源,这意味着什么? https://www.oschina.net/news/78316/loongson-open-source-two-cpu-core 文章挺不错的也讲了 ...
- 龙芯将两款 CPU 核开源,这意味着什么?
10月21日,教育部计算机类教学指导委员会.中国计算机学会教育专委会将2016 CNCC期间在山西太原举办"面向计算机系统能力培养的龙芯CPU高校开源计划"活动,在活动中,龙芯中科 ...
最新文章
- oracle-pl/sql之三
- http://www.cnblogs.com/amboyna/archive/2008/03/08/1096024.html
- C# random helper class
- c语言二fseek从文件头移动_编程C语言文件的随机读写
- 中年女性凹“少女感”引发不适,90后最在意什么?
- 【旅行】——出发!露营去。
- JAVA入门级教学之(你是否理解HelloWorld的这段经典的代码的注释)
- Java ClassLoader setClassAssertionStatus()方法与示例
- 深入浅出OOP(一): 多态和继承(早期绑定/编译时多态)
- java filterconfig_使用FilterConfig读取配置文件的信息 ---学习笔记
- 微信小程序--优购商城项目(6)
- oracle中substr () in,Oracle中的substr()函数使用详解及应用
- Java基础项目 开发团队分配管理系统
- 一元二次求解matlab程序,规范MATLAB编程实例——求解一元二次方程
- Netty实现聊天室
- 一种ESP8266使用MQTT连接阿里云和云Web方法
- Fall 2011 CS193P Assignment 2: 可编程计算器答案
- 阿里云SLB负载均衡
- 一段话中手机号中间四位做特殊处理
- c语言输入一个三位数由小到大排序,c语言程序设计练习题.doc
热门文章
- 英语时态+语态(基础框架)
- Python 程序设计与算法基础教程(第二版)第四章上机实践
- Python——sum()、.sum(axis=0)和.sum(axis=1)函数的使用
- AOPA考证流程与考试步骤(非常详细)
- 人工智能算法需要运用计算机吗,什么是人工智能算法.ppt
- 找不到模块“axios”或其相应的类型声明(vite)
- Python re 正则:抓取网页上电驴/磁力/迅雷链接
- 智能手环功能模块设计_智能养老手环设计方案
- 云安对于物理服务器监控
- 截面空间计量模型(Stata)