<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>嵌入式系統 &#8211; 科技島-掌握科技新聞、科技職場最新資訊</title>
	<atom:link href="https://www.technice.com.tw/tag/%e5%b5%8c%e5%85%a5%e5%bc%8f%e7%b3%bb%e7%b5%b1/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.technice.com.tw</link>
	<description>專注於科技新聞、科技職場、科技知識相關資訊，包含生成式AI、人工智慧、Web 3.0、區塊鏈、科技職缺百科、生物科技、軟體發展、雲端技術等豐富內容，適合熱衷科技及從事科技專業人事第一手資訊的平台。</description>
	<lastBuildDate>Thu, 22 Jan 2026 08:30:29 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.2</generator>

<image>
	<url>https://www.technice.com.tw/wp-content/uploads/2022/12/cropped-wordpress_512x512-150x150.png</url>
	<title>嵌入式系統 &#8211; 科技島-掌握科技新聞、科技職場最新資訊</title>
	<link>https://www.technice.com.tw</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【學長姐帶路】嵌入式系統基礎原理，初學者到底該如何學習？</title>
		<link>https://www.technice.com.tw/work-place/mentor/136629/</link>
					<comments>https://www.technice.com.tw/work-place/mentor/136629/#respond</comments>
		
		<dc:creator><![CDATA[周星馳]]></dc:creator>
		<pubDate>Fri, 23 Aug 2024 06:08:57 +0000</pubDate>
				<category><![CDATA[學長姊帶路]]></category>
		<category><![CDATA[投書徵稿]]></category>
		<category><![CDATA[學長姐帶路]]></category>
		<category><![CDATA[嵌入式系統]]></category>
		<category><![CDATA[工作甘苦談]]></category>
		<category><![CDATA[面試問題]]></category>
		<guid isPermaLink="false">https://www.technice.com.tw/?p=136629</guid>

					<description><![CDATA[<p>許多初學者或工程師朋友們常會問我，想學好嵌入式系統基礎，到底該學ARM、8051還是PIC? 該學習幾位元的CPU平台?<content><!-- wp:paragraph --></p>
<p>原標《【嵌入式系統基礎原理與實務課程】初學者到底該學習哪款 ...》</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>文/阿良的嵌入式系統技術學習區</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>❓許多初學者或工程師朋友們常會問我，想學好嵌入式系統基礎，到底該學ARM、8051還是PIC? 該學習幾位元的CPU平台?</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":136645,"sizeSlug":"large","linkDestination":"none"} --><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>首先，我建議應該先了解這個問題是在「問什麼」，什麼是ARM?</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>ARM是CPU，而8051和PIC是MCU，朋友們可自行想想看，CPU和MCU是一樣的東西嗎?</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>又，假設初學者只有呼叫過(複製貼上、頂多改參數/引數) 人家所寫好的API (例如開源社群 或者 IC Design公司的軟韌體單位 所提供的API Library函數庫)來驅動MCU作事(完成功能)的話，</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>🔎我們以呼叫下列函數為例子 (不針對特定平台，但看函數名稱應該很清楚這在做啥):</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>GPIO_Setup(Pin_number, Output);</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>GPIO_Output(Pin_number, High);</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>無論你是使用什麼CPU based的MCU/SoC晶片為核心的板子(無論CPU是ARM、8051、MIPS、AVR、PIC MCU內的CPU)，上述code確實能讓MCU的GPIO Port輸出數位訊號的1(高電位)，</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>但是，如果只是呼叫這些函數的話，有讓你接觸到CPU架構嗎? 和CPU有什麼關係? 甚至很多人可能沒思考過，到底什麼是CPU?</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>初學者或沒思考過這些問題的工程師朋友們，也有可能會連上述這些範例程式碼，在MCU上電開始動作時，到底是被存放在哪裡的狀態下被CPU給提取和執行，可能都不清楚 。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>🧐但我們試想一個問題，如果只是呼叫函數，而從來沒了解過背後的原理基礎，那是否一位受過基本實驗訓練的國中生、高中生就能作這些了? 對於系統開發設計的基礎知識與深度是否足夠?</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>恐怕有許多朋友從來沒有思考過這些問題。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>‼本園區的 「嵌入式系統基礎原理與實務課程」，能藉由適合初學者奠定基礎觀念的8051 MCU (架構相對簡易清晰的微電腦平台) 作為教材，讓你了解CPU到底做了些什麼? 當然每款CPU之間會有差異，但是建立基礎觀念之後，許多觀念都是通用且可延伸的。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>再次重申‼ 這個課程並不是只教你8051 MCU怎麼用，也不是只教8051，</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>而是以8051這款 架構相對簡易清晰的微電腦平台 (且資料完整豐富)作為實作/實驗/理論觀念驗證的實驗平台，</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>期望學員能在學習完課程後能奠定嵌入式系統(更精確來說是電腦底層觀念，不只是嵌入式系統)基礎，包含CPU指令集/行為、記憶體存取、基礎常見周邊裝置驅動應用、基本介面電子電路(類比&amp;數位)，</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>希望學員將這些學習內容消化吸收後，在未來於職場工作上遇到其它微電腦晶片平台時，可以有清晰的架構觀念，能舉一反三、能藉由紮實的基礎而在未來工作之中遇到其它平台時，能有自行舉一反三、擁有自學熟悉新平台的能力。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>-</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>再延伸上述的說明內容，以subroutine call或者function call為例</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>👉無論是哪款CPU，基本上都會有一些必須的暫存器，例如PC (Program Counter register，程式計數器)、 SP (stack pointer register，堆疊指標)、PSW (Program Status Word register，程式狀態字組)，這些暫存器的用途為何?</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>👉堆疊(stack)是什麼時候需要使用? 呼叫subroutine(這邊是指組合語言的副程式)或者在C語言作function call時是如何被使用? 是如何被實現? CPU在此時做了哪些事?</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>👉當撰寫C語言去呼叫函數、或者撰寫組合語言呼叫副程式，CPU所執行的程式流程是怎麼跳 過去執行subroutine的?</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>👉中斷(Interrupt)發生時，又是如何使用堆疊來完成中斷機制? CPU所執行的程式流程是怎麼跳 過去執行ISR (Interrupt Service Routine，中斷服務程式)的?</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>👉以8051內的CPU指令集為例，CALL指令分為ACALL和LCALL，差別在哪? 而和Stack(堆疊)相關的PUSH/POP/RET/RETI指令是在做什麼的? 實際上做了哪些相關的事?</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>👉CPU在執行完subroutine或者ISR(中斷服務程式)之後要如何回家(回到主流程?) 如果堆疊之中這些被存放的值被意外地改掉，會發生什麼事?</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>再講些題外話，</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>👉如果用C語言撰寫MCU程式，你知道main()函數被執行之前做了什麼事嗎?</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>👉如果用C語言撰寫MCU程式，例如宣告變數 unsigned char i=1; 你知道這個i變數的物理實體設備空間實際上是什麼嗎? 知道實際上這個i=1是如何被實現的嗎?</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"linkDestination":"custom"} --></p>
<figure class="wp-block-image"><a href="https://lh3.googleusercontent.com/-52qOq7EwNA8/YWf8IG-1YPI/AAAAAAAAErs/UnwD5QP01NkijkSmM3ml_OX1Ne_kwl-iQCLcBGAsYHQ/image.png"><img title="【嵌入式系統基礎原理與實務課程】初學者到底該學習哪款MCU?" src="https://lh3.googleusercontent.com/-52qOq7EwNA8/YWf8IG-1YPI/AAAAAAAAErs/UnwD5QP01NkijkSmM3ml_OX1Ne_kwl-iQCLcBGAsYHQ/w400-h151/image.png" alt="【嵌入式系統基礎原理與實務課程】初學者到底該學習哪款MCU?" /></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:image {"linkDestination":"custom"} --></p>
<figure class="wp-block-image"><a href="https://lh3.googleusercontent.com/-hZaQB3lmLzI/YWf8JvPN1GI/AAAAAAAAErw/I3DPWq842r4fCNCD0Qn9EEN9SEx1v8OtwCLcBGAsYHQ/image.png"><img title="【嵌入式系統基礎原理與實務課程】初學者到底該學習哪款MCU?" src="https://lh3.googleusercontent.com/-hZaQB3lmLzI/YWf8JvPN1GI/AAAAAAAAErw/I3DPWq842r4fCNCD0Qn9EEN9SEx1v8OtwCLcBGAsYHQ/w400-h240/image.png" alt="【嵌入式系統基礎原理與實務課程】初學者到底該學習哪款MCU?" /></a></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>再強調一次，如果只有經歷過呼叫現成的API的經驗，讓MCU會動就滿足，而從來沒了解過這些API背後的底層原理基礎的話，那是否一位受過最基本的實驗步驟訓練的國高中生就能做這些了? 讀到大學甚至碩、博士畢業，或者身為工程師的專業度在哪裡呢?</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>我想這些是很值得大家思考的事! 我認為專業領域的視野和深度，可以決定一位工程領域人員的實際專業價值。</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>※本文由 <a href="https://iws6645.pixnet.net/blog" target="_blank" rel="noreferrer noopener">阿良的嵌入式系統技術學習區</a> 授權轉載, 原文:<a href="https://iws6645.pixnet.net/blog/post/334458120" target="_blank" rel="noreferrer noopener">《【嵌入式系統基礎原理與實務課程】初學者到底該學習哪款 ...》</a></p>
<p><!-- /wp:paragraph --></content></p>
<p>這篇文章 <a rel="nofollow" href="https://www.technice.com.tw/work-place/mentor/136629/">【學長姐帶路】嵌入式系統基礎原理，初學者到底該如何學習？</a> 最早出現於 <a rel="nofollow" href="https://www.technice.com.tw">科技島-掌握科技新聞、科技職場最新資訊</a>。</p>
]]></description>
		
					<wfw:commentRss>https://www.technice.com.tw/work-place/mentor/136629/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
