<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>操作系统 on 软件开发大郭的技术博客</title>
		<link>https://blog.grabbyte.com/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/</link>
		<description>Recent content in 操作系统 on 软件开发大郭的技术博客</description>
		<generator>Hugo</generator>
		<language>en</language>
		
		
		
		
			<lastBuildDate>Mon, 20 Nov 2023 12:51:25 +0800</lastBuildDate>
		
			<atom:link href="https://blog.grabbyte.com/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>FreeRTOS如何解决访问冲突/线程不安全(临界段、互斥锁、挂起调度、看门人任务)</title>
				<link>https://blog.grabbyte.com/p/2023/11/20-1251.html</link>
				<pubDate>Mon, 20 Nov 2023 12:51:25 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/11/20-1251.html</guid>
				<description>&lt;p&gt;在多任务（多线程）系统中，存在一个隐患，那就是多线程的访问（在FreeRTOS中就是任务）。&lt;/p&gt;&#xA;&lt;p&gt;当一个任务A开始访问一个资源（外设、一块内存等），但是A还没有完成访问，B任务运行了，也开始访问，这就会造成数据破坏、错误等问题。&lt;/p&gt;</description>
			</item>
			<item>
				<title>FreeRTOS系列第1篇---为什么选择FreeRTOS？</title>
				<link>https://blog.grabbyte.com/p/2022/03/918.html</link>
				<pubDate>Sat, 05 Mar 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/03/918.html</guid>
				<description>&lt;h2 id=&#34;1为什么学习rtos&#34;&gt;1.为什么学习RTOS？&lt;/h2&gt;&#xA;&lt;p&gt;作为基于ARM7、Cortex-M3硬件开发的嵌入式工程师，我一直反对使用RTOS。不仅因为不恰当的使用RTOS会给项目带来额外的稳定性风险，更重要的是我认为绝大多数基于ARM7、Cortex-M3硬件的项目，还没复杂到使用RTOS的地步，使用状态机就足够了。&lt;/p&gt;</description>
			</item>
			<item>
				<title>UCOSIII介绍</title>
				<link>https://blog.grabbyte.com/p/2022/03/901.html</link>
				<pubDate>Sat, 05 Mar 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/03/901.html</guid>
				<description>&lt;h2 id=&#34;一前后台系统和rtos&#34;&gt;一，前后台系统和RTOS&lt;/h2&gt;&#xA;&lt;h3 id=&#34;1前后台系统&#34;&gt;1，前后台系统&lt;/h3&gt;&#xA;&lt;p&gt;早期嵌入式开发没有嵌入式操作系统的概念 ，直接操作裸机，在裸机上写程序，比如用51单片机基本就没有操作系统的概念。通常把程序分为两部分：前台系统和后台系统。&lt;/p&gt;</description>
			</item>
			<item>
				<title>UCOSIII系统</title>
				<link>https://blog.grabbyte.com/p/2022/03/909.html</link>
				<pubDate>Sat, 05 Mar 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/03/909.html</guid>
				<description>&lt;h2 id=&#34;说明&#34;&gt;说明：&lt;/h2&gt;&#xA;&lt;p&gt;本文主要讲针对STM32的UCOSIII3.03版本的文件与内核分析。此文只是对UCOSIII粗略的讲解，希望读者在读完后能对UCOSIII系统整体多些认识，细节方面还请读者参考相关书籍，如《嵌入式实时操作系统ucosiii》。介于作者水平有限，若有错误，请及时批评指正。&lt;/p&gt;</description>
			</item>
			<item>
				<title>车机系统清单</title>
				<link>https://blog.grabbyte.com/p/2022/01/400.html</link>
				<pubDate>Thu, 06 Jan 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/400.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;玩车机（刷机、适配、开发）或做汽车电子考古，第一个问题都是“这台车机跑的是什么系统”。这份清单按品牌整理主流车机系统与它们的底层操作系统。&lt;/p&gt;&#xA;&lt;h1 id=&#34;原理车机-os-的三个流派&#34;&gt;原理：车机 OS 的三个流派&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;QNX&lt;/strong&gt;：加拿大 QNX（现属 BlackBerry）的微内核实时系统，硬实时、体积小、功能安全认证积累深。仪表与中控“一壳多屏”的场景要求系统绝不能卡死，所以传统车企的中高端平台（大众 MIB、奥迪 MMI、奔驰 Comand、保时捷 PCM 等）基本被它统治；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;WinCE&lt;/strong&gt;：微软的嵌入式系统，MRN、二代 Sync 这代产品的选择，随微软退出车载市场成为历史；&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Linux / Android / AliOS&lt;/strong&gt;：手机生态向车机迁移的路线，开源可定制、生态丰富，特斯拉与国产品牌、新势力（比亚迪 DiLink、蔚来、斑马智行等）大多走这条线。特斯拉的系统俗称 Version（随 v9/v10 这类大版本号得名），底层是自研的 Linux。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;选型逻辑一句话：&lt;strong&gt;要实时性与安全认证选 QNX，要生态和迭代速度选 Android 系&lt;/strong&gt;。&lt;/p&gt;</description>
			</item>
			<item>
				<title>保时捷车型PCM主机的小秘密，你想知道吗？</title>
				<link>https://blog.grabbyte.com/p/2022/01/383.html</link>
				<pubDate>Wed, 05 Jan 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/383.html</guid>
				<description>&lt;p&gt;很多车主买车之前都疑惑？保时捷加规（加拿大）、美规（美国）、墨规（墨西哥）等车价明显比中规便宜很多，都是保时捷生产的到底有哪些不一样？&lt;/p&gt;&#xA;&lt;p&gt;非中规车型系统除了PCM（娱乐主机）软件以外还有一些硬件的不同，如美规前保险杠左右侧都有黄色示宽灯，加规刹车尾灯亮灯方式不一样，美规转向尾灯为红色（中规为黄色），新西兰保时捷安全带监控为全车五座或四座（中规为前排）等等。&lt;/p&gt;</description>
			</item>
			<item>
				<title>QNX Momentics IDE 开发环境设置</title>
				<link>https://blog.grabbyte.com/p/2022/01/308.html</link>
				<pubDate>Sat, 01 Jan 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/308.html</guid>
				<description>&lt;p&gt;一、QNX Momentics IDE 项目设置&lt;br&gt;&#xA;1、导入项目&lt;br&gt;&#xA;File &amp;gt; Import &amp;gt; General &amp;gt; Existing Projects into Workspace &amp;gt; Select root directory.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;2、目标平台设置&#xA;    项目属性：Properties &amp;gt; QNX C/C++ Project &amp;gt; Build Variants.&#xA;&#xA;    可以选择ARM和x86两种不同的平台，其中x86平台是小端序（Littel Endia）.&#xA;&#xA;3、导出库设置&#xA;    项目属性：Properties &amp;gt; QNX C/C++ Project &amp;gt; Library.&#xA;&#xA;    可以选择导入为静态库，共享库，或其他类型的导出库文件.&#xA;&#xA;4、编译环境设置&#xA;    项目属性：Properties &amp;gt; QNX C/C++ Project &amp;gt; Compiler.&#xA;&#xA;    在Category栏可以设置General options, Extra include paths和Extra souce paths.&#xA;&#xA;    General options &amp;gt; Output options &amp;gt; Warning level：设置编译器警告等级；&#xA;&#xA;    General options &amp;gt; Code generation &amp;gt; Optimization level：代码产生优化级别；&#xA;&#xA;    Extra include paths ： 外部包含头文件；&#xA;&#xA;    Extra souce paths ： 外部包含源文件。&#xA;&#xA;5、链接库文件&#xA;    项目属性：Properties &amp;gt; QNX C/C++ Project &amp;gt; Linker.&#xA;&#xA;    在Category栏选择Extra libraries，有三种添加库文件的方法：&#xA;&#xA;    Add：手动添加库文件；&#xA;&#xA;    Project：从工程项目中选择库文件（一般使用这个方法导入同一个工作目录下的库文件）；&#xA;&#xA;    QNX target：导入目标系统的库文件（用于将开发系统上的库文件部署到目标系统）。&#xA;&#xA;    设置项目的链接库以后还需按照【4、编译环境设置】的步骤包含库文件的头文件。&#xA;&#xA;6、项目依赖&#xA;    项目属性：Properties &amp;gt; Project Reference 设置项目依赖。&#xA;&#xA;    勾选关联项目后，编译构建当前项目前会先编译构建勾选的项目；&#xA;&#xA;    如果项目较多，构建过程会耗时很长，建议在项目的后期全部编译的时候再勾选。&#xA;&#xA;7、项目调试&#xA;    QNX分别有Run Configuration和Debug Configuration两个不同的设置，参数都类似。&#xA;&#xA;    这里介绍使用QConn连接目标系统的调试方法：&#xA;&#xA;    打开 Run &amp;gt; Debug Configuration &amp;gt; C/C++ QNX QConn (IP)：&#xA;&#xA;    1、点击右键选择新建一个调试配置；&#xA;&#xA;    2、默认情况下Main &amp;gt; C++ Applicaiton和Project已经包含有当前项目，没有的话就添加上；&#xA;&#xA;    3、拉动滚动条到Main &amp;gt; Target Options &amp;gt; Add New Target添加一个新的远程目标系统；&#xA;&#xA;    4、Arguments设置应用程序启动时的参数；&#xA;&#xA;    5、Enviroment添加运行时的环境变量；&#xA;&#xA;    6、Upload &amp;gt; Excutable有两个选项，第一个是将本地生成的程序上载到目标系统的指定目录后进行调试，第二个是运行指定目标系统上的程序进行调试，Remote Directory用来指定要上载到目标系统的路径；&#xA;&#xA;    如果目标系统连接成功，参数设置正确，就不会有红色标记，此时就可以选择debug开始调试了。&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;二、开发环境设置&lt;br&gt;&#xA;1、偏好设置&lt;br&gt;&#xA;打开Window &amp;gt; Preference，可以设置IDE的各种自定义偏好。&lt;/p&gt;</description>
			</item>
			<item>
				<title>QNX学习笔记-QNX SDP各版本下载</title>
				<link>https://blog.grabbyte.com/p/2022/01/306.html</link>
				<pubDate>Sat, 01 Jan 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/306.html</guid>
				<description>&lt;p&gt;使用qnx660及7.0以后，其screen使用的是opengl，可以再使用QT，crank，kanzi开发3D UI界面&lt;/p&gt;&#xA;&lt;p&gt;使用qnx650或qnx650以下的，qnx的老架构放哪，photo GUI，qnx已不支持此老架构方案&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
