SylixOS ARM BSP 第三篇【bspInit.c】

SylixOS的BSP开发实例之S3C2416 【第二篇】内存映射与初始布局 在SylixOS的S3C2416的BSP包中有“SylixOS/bsp/bspMap.h”文件,此文件是操作系统内存布局设置与初始映射配置,在文件的开始有内存分配的描述,描述如下图。   其中 MMU 页面标识可以在 SylixOS 的 BASE 工程中 “SylixOS/kernel/vmm/pageTable.h” 中获取到,具体参数描述如下图。 /******** 阅读详情

此篇博客为 SylixOS ARM BSP 编写连载的第三篇,主要介绍 bspInit.c 文件具体实现。

bspInit.c 为 BSP 操作系统初始化部分代码,通常由 startup.S 初始完基本处理器参数后调用,下面以 S3C2440A 处理器为例,逐块介绍 bspInit.c 代码。


SylixOS ARM BSP 第二篇中提到 startup.S 初始化完成会将会调用 bspInit() 函数,此函数用于初始化操作系统,并开始多任务调度。

int bspInit (void)
{
    static __section(.noinit) CHAR  cKernelHeap[6 * LW_CFG_MB_SIZE];
    static __section(.noinit) CHAR  cSystemHeap[6 * LW_CFG_MB_SIZE];
    
    halModeInit();
    debugChannelInit(0);
    
    API_KernelStartParam("ncpus=1 kdlog=no kderror=yes kfpu=no heapchk=yes");
    API_KernelStart(usrStartup, cKernelHeap,sizeof(cKernelHeap),
                    cSystemHeap,sizeof(cSystemHeap));
    return  (-1);
}

代码中定义的 cKernelHeap 与 cSystemHeap 为 SylixOS 内核堆与系统堆内存位置( cKernelHeap 与 cSystemHeap 数组不需要被清零),这里通过 static char 数字的方式开辟,__section(.noinit) 其中 __section() 是一个宏,原型在 sys/compiler.h 中定义:

#ifdef BSD /* bsd system use __attribute__ ((__section__(S))) not #S, 
              so compiler bsd source MUST defined BSD */
#  define __section(S)   __attribute__ ((__section__(S)))
#else
#  define __section(S)   __attribute__ ((__section__(#S)))
#endif

表示将被定义的对象放在某一个指定的段中,这里的 __section(.noinit) 表示 cKernelHeap 与 cSystemHeap 数组放在 .noinit 段中(如果没有指定,则默认在 .bss 段中),类似汇编中的 SECTION() 操作。

.noinit 段不需要在 startup.S 中没有像 .bss 段一样被清零,所以这样的方法可以加快系统启动时间。

halModeInit() 是目标机模式初始化函数,目前为空函数,如有需要用户可以加入自己的代码,此代码将会在操作系统初始化之前被调用。

debugChannelInit() 操作系统内部使用 bspDebugMsg() 作为内部调试信息打印接口,debugChannelInit() 就是初始化这个打印接口,bspDebugMsg() 函数将在以后的 bspLib.c 博文中详细说明。

API_KernelStartParam() 是系统内核函数,负责设置操作系统启动参数,启动参数为一个字符串,格式为【参数名=参数值】多个参数之间用空格隔开,SylixOS 目前支持的启动参数有:

参数名 默认值 说明
ncpus 1 CPU 个数,例如点击打开链接单核处理器 ncpus=1 多核处理器 ncpus=CPU 数量,注意:ncpus 不得大于 LW_CFG_MAX_PROCESSORS
dlog no
是否允许操作系统通过 bspDebugMsg() 函数打印调试信息,dlog=yes 代表允许,dlog=no 代表不允许
derror yes 是否允许操作系统通过 bspDebugMsg() 函数打印错误信息,参数与 dlog 相同
kfpu no 是否允许操作系统内核使用硬浮点运算器,强烈建议此参数为 no
heapchk yes 是否允许操作系统对所有内存堆操作进行内存访问越界检查,建议参数为 yes
varea 0xC0000000 表示系统虚拟内存空间起始点,虚拟空间配置将在以后的 bspMap.h 博文中详细说明。
vsize 0x40000000
hz 100
hhz 100
irate 5
hpsec 1


(未完,待续)

转载出处:http://hanhui03.blog.51cto.com/10427533/1663598

NRF按键中断BSP长按功能实现 最近在使用Nordic公司的NRF开发板进行开发,需要使用长按功能,看到网上这方面的总结不太多。因此写一篇关于长按功能的实现分析。 首先是按钮的初始化,初始化的入口在bsp_init()中,为了实现按钮功能,使用了bsp_event_to_button_action_assign()这个函数,同一个按钮可以assign多个动作响应,每个动作可以对应于一个相应的动作处理事件,可用的按钮动作有三个... 阅读详情

相关推荐

SAP-PP 返工订单成本归集优化:从物料结算到成本中心的配置与增强实践

本文深入探讨SAP-PP模块中返工订单成本归集的优化方案,重点解析从物料结算到成本中心的配置与增强实践。通过结算参数文件配置、分配结构调整及增强开发实战,解决返工费用误计入物料成本的问题,确保财务核算精准性。文章还提供测试验证方案与常见报错处理技巧,助力企业实现成本数据清晰流向分析。

weixin_29260291的博客 365

嵌入式FreeRTOS操作系统中断优先级配

嵌入式FreeRTOS操作系统中断优先级配置(重要) 2016年09月23日 16:49:48偏执灬阅读数:8865更多 个人分类:嵌入式实时操作系统 本章节为大家讲解FreeRTOS中断优先级配置,此章节非常重要,初学者经常在这里犯迷糊。对于初学者来说,本章节务必要整明白。 12.1 NVIC基础知识 12.2使用FreeRTOS时如何配置外设NVIC 12.3 Fre...

位文杰的博客 1万+

AD在建PCB封装时如何添加元器件的3D模型

3D模型

k1ang的博客 1万+

SylixOS的来龙去脉

什么是SylixOS SylixOS是一款诞生于2006年、由中国人自己开发的、大型、嵌入式、实时、类UNIX、操作系统。现由翼辉信息有限公司专门推广和开发。 特别强调一下,SylixOS不是Linux的衍生版,也不是照抄了其他操作系统的内核,SylixOS内核完全是国人自主开发的,另外配套移植了一些第三方开源软件(如FAT文件系统,QT图形界面等,其他操作系统的很多中间件也大多是移植第三方开源软件)而组成的操作系统。 之所以强调是自主开发,是因为在SylixOS推广的初期,用户都会有太多误解和疑问。最经典

ScilogyHunter的博客 1万+

FPGA开发中Quartus与Modelsim联合仿真配置与调试全攻略

在数字电路设计与FPGA开发中,仿真验证是确保逻辑功能正确性和时序性能达标的核心环节。其基本原理是通过软件模拟硬件电路的行为,在设计转化为实际硬件前发现潜在缺陷。这项技术的核心价值在于大幅降低开发风险与成本,提升设计可靠性,广泛应用于通信、嵌入式系统、芯片验证等领域。对于使用Intel FPGA平台的开发者,Quartus Prime作为官方综合布局布线工具,其内置仿真器在应对复杂设计、深度调试和自动化测试时存在局限。此时,引入专业仿真工具Modelsim进行联合仿真成为提升验证效率的关键实践。通过搭建自动

weixin_33736048的博客 451

CVE-2017-7921漏洞深度解析:海康设备明文密码泄露原理与七层防御

网络摄像头安全本质上是嵌入式Web服务安全,其核心在于身份认证机制是否健全。CVE-2017-7921并非传统远程执行漏洞,而是因信任错位导致的未授权API暴露——`/Security/users/1`接口绕过Session校验,直接返回admin明文密码。该问题根植于安防设备早期‘物理隔离+前端可控’的设计假设,在P2P、云平台等新场景下全面失效。技术价值在于揭示了轻量级HTTP服务中路径级访问控制缺失的普遍风险;典型应用场景包括ONVIF协议接管、Telnet后门登录及NVR侧横向移动。本文基于DS-2

weixin_33324197的博客 402

SylixOS 大型实时操作系统

SylixOS的简介

weixin_68540764的博客 1721

Odoo 入门 | 什么是 Odoo?

Odoo是一套全球开源的ERP/CRM系统,最初的名字为TinyERP,08年5月之后称之为OpenERP,之后又改为Odoo。

洛阳泰山的博客 6208

【STM32H7】第4章 RTX5操作系统移植(MDK AC5)

论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=93149 第4章 RTX5操作系统移植(MDK AC5) 本章教程为大家讲解RTX5内核的AC5编译器移植。 目录 第4章 RTX5操作系统移植(MDK AC5) 4.1 初学者重要提示 4.2 移植RXT5内核整体说明 4.3 了解RTX5内核模板框架设计 4.4 第1步,安装指定的MDK软件包版本 4.5 第2步,准备一个工...

Simon223的博客 1677

如何用Python编程实现算术割圆术?

第10章 割圆术 Python编程要点 from … import …语句 math模块的sqrt()函数 round()函数 10.1 图解九章 {:–}觚( gū ):正多边形。“六觚”即正六边形,“十二觚”即正十二边形。 图10-1 六觚、十二觚、二十四觚 提示 图10-1所示由图解九章源码中的“图解割圆术.py”自动绘制而成,我们可运行脚本文件,查看动态的绘制过程。 割六觚以...

人邮异步社区 3237

位置点位到达判断FC(Easy+Codesys+博途平台)

IN rActPositon REAL 轴当前实际位置 1IN arAbsPosition REAL[10] 各工作点位坐标 2IN rDeadZone REAL 位置达到判断域值 范围 3OUT abInAbsPos BOOL[10] 到达各绝对定位点位标志 位置到达输出 4VAR i INT 循环计数 5VAR rErr REAL 位置偏差 6。

RXXW_Dor的博客 536

Ucosiii学习笔记(一)创建任务

针对官网给的uc/os-IIIfor stm32 arm Cortex-M3书籍的学习笔记。 第三章 开始使用ucos-III 1.文件介绍:与其他的C程序一样,在使用前必须包含应用程序所需要的头文件。对应Ucosiii来说,我们可以将需要的头文件放入“includes.h”的文件中,并在拥有主函数的文件中(如app.c)中将它包含进来。 根据书上的历程,其中包含有“app_cfg.h”,“bsp...

weixin_43486211的博客 1036

超强干货之---Python-数据爬取(爬虫)

定义: 深度优先搜索是一种遍历或搜索树或图的算法,从起始节点开始,一直沿着一个分支走到底,再回溯到上一个节点继续搜索下一个分支,直到遍历完所有节点。特点递归:通常用递归实现,或者使用栈来模拟递归过程。内存占用低:在有大量分支的情况下,内存占用比广度优先搜索低。适合目标较深的情况:如果目标节点距离起始节点较深,DFS能更快找到目标。适用场景需要遍历所有节点的情况,如生成树、迷宫搜索。目标节点较深,且分支较多时。在大规模数据爬取时,选择合适的存储方式取决于数据的规模、结构和访问需求。

房东的猫的博客 5万+

SylixOS ARM BSP 第一篇【文件结构】

SylixOS 是国人自己开发的开源实时操作系统,该系统符合 IEEE1003 POSIX 操作系统规范,功能强大开发便利,系统主页:www.sylixos.com 此篇博客为 SylixOS ARM BSP 编写连载的第一篇,力求以深入浅出的方法介绍 SylixOS ARM BSP 的编写方法。 SylixOS BSP 分为两大部分: 基础支持程序 驱动程序

sun_junhui的博客 2235

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SylixOS ARM BSP 文件结构

SylixOS是一款国人自己写的实时操作系统,在介绍这款操作系统之前我们首先来看一篇好的文章: http://hanhui03.blog.51cto.com/10427533/1663454 来了解一下SylixOS bsp的简单结构。

flags_s的博客 857

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

NRF52832学习笔记(26)——BSP按键短按和长按

一、简介 在蓝牙协议栈下,库函数文件提供了一个 BSP(板级支持包) 来支持硬件外设上的按键和 LED 灯的控制,该文件以 bsp.c 和 bsp.h 进行命名。这里所谓的 BSP(板级支持包) 主要是整合了按键模块的功能和一些“板级指令”以及与 BLE 事件的交互,和你使用的开发板硬件配置相关。其中按键控制以软件按键 app button 库为基础。软件按键 app button 和软件定时 app timer 类似,可以注册多个软件按键。通过 GPIOTE 来实现任务的触发。 二、API 2.1 bsp

李肖遥的专栏 1761

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

#智能车项目(二)BSP初始化

【代码】#智能车项目(二)BSP初始化。

Pretender_1205的博客 243

52840 按键-bsp案例

int main(void) bsp_configuration(); 只有一个函数 开始分析 void bsp_configuration() bsp_init(BSP_INIT_LEDS | BSP_INIT_BUTTONS, bsp_evt_handler); 只有一个函数 开始分析 参数: BSP_INIT_LEDS | BSP_INIT_BUTTONS 在内部拆分 bsp_evt_handler 非常关键的回调函数 现在分.

GKoSon的博客 529

翼辉sylixos国产嵌入式操作系统介绍

SylixOS 的自主研发之路并非一帆风顺。从 2006 年完成最基本的内核,到 2007 年增加 I/O 系统,再到 2008 年引入网络与文件系统和实用工具,以及后续不断丰富的功能和对各种处理器体系结构的支持,SylixOS 一直在不断进化和完善。在当今科技飞速发展的时代,国产嵌入式操作系统领域不断涌现出创新的成果,比如都江堰操作系统(djyos),rt-thread os,sylixos,其中 SylixOS 作为一款由中国人自主开发的大型嵌入式实时操作系统,正以其独特的魅力和卓越的性能崭露头角。

低速无人驾驶自动技术 2702

SylixOS到底是不是真国产?

经过多年的努力,越来越多的客户相信SylixOS是真正的国产操作系统,翼辉也参与了众多国家及重大专项,有力的支持了国内信息工业自主可控发展。

ScilogyHunter的博客 7706

嵌入式代码中BSP,MSP的含义

阅读代码的过程中会看到BSP_Init(); 起初对BSP不理解,看到ST的一个文档,其中有段描述,感觉不错,贴出来分享一下。

电子开发的经验笔记 7642
上一篇: SylixOS JobQueue 简介
下一篇: SylixOS 块消息缓冲区
flags_s
博客等级 码龄11年 15粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值