作者candog (怕热的肥宅)
看板NTHU_Course
标题Fw: [心得] EE2405 嵌入式系统与实验 刘靖家
时间Wed Feb 15 01:59:00 2017
※ [本文转录自 candog 信箱]
作者:
[email protected] ("FireBolt")
标题: [心得] EE2405 嵌入式系统与实验 刘靖家
时间: Wed Feb 15 01:19:30 2017
作者: zain523 (阿狗) 站内: nthu.course
标题: [心得] EE2405 嵌入式系统与实验 刘靖家
时间: 2009/01/06 Tue 21:09:06
课名: 嵌入式系统与实验
科号: EE2405
老师: 刘靖家
课本: 无
课别: 电机系选修
学分: 3
凉度:★★★☆☆
甜度:★★★★★
介绍:
这门课改名了, 其实就是以前的"微处理机实验", 而且由原来的2学分改成3学分;
改名的原因不是很清楚, 但改成3学分比较近於人情 T T 真好!
基本上这门课跟钟太郎教授所开的"微处理机系统"可说几乎没有任何关系,
改名的原因可能是因为避免混淆造成没有修过微处理机系统就以为不能修的错觉,
实际上现在的课名比较合乎课程内容。
修这门课需要什麽背景知识呢? 如果你有修过逻设实验, 也修过程设,
会
写简单的 C 及 Verilog, 并且看得懂英文大概就没有问题了...
课程内容:
顾名思义, 修完这门课你会对嵌入式系统有一定程度的了解,
整个学期大约有10个左右的 Lab 要做, 每个 Lab demo 完回家要写一份报告,
还有一个 final project 要做, 题目自订, 运用本学期所学到的东西可简可繁。
这门课实在不赖,教授讲过的一句话:「
上这门课是在练功。」
何谓练功?意即在当下也许不会感觉自己有明显的进步,
但时间久了累积下来,有朝一日派上用场才发觉自己居然有这样的实力了。
Lab 1 Introduction to Linux
Lab 2 Booting an embedded Linux system
Lab 2a Kernel Recompilation and Ramdisk Modificatioon
Lab 3 Network File System
Lab 3a Debugging techniques
Lab 4 Building toolchain and root file system
Lab 5 Programming with RS-232
Lab 6 Introduction to Linux Device Driver
Lab 7 Memory Mapped I/O
Lab 8 Interrupt-based I/O
Lab 9 Interfacing FPGA Devices
(以上为各个Lab的内容↑)
心得:
简单叙述一下,整门实验课都会用到一块名为 PCM-7230 的实验主板,
第一堂课很简单,只要把 Cent OS 灌到抽取式硬碟里,
它将是我们这学期的操作介面 (Linux 的作业系统。)
原先听学长说要熟悉 Linux 而且要修过资工开的作业系统再来修这门课比较好,
我想应该多少有点差别,不过以我个人经验看来,
刚开始的确会不大了解教授讲的东西,幸好课程网站上的参考资料相当丰富,
课後闲来没事也可以去参考参考;也可以在课堂讲解的时候问教授,
他会讲得极其详细,每次 Lab 做完有问题的地方或想深入了解的它的机制,
都可以留到下次上课发问,通常可以得到很满意的答案。
至於 Linux 的介面则是不久以後就习惯了,我想应该不会有什麽太大问题。
第一堂课会很早下课XD,学期中几乎百分之九十的实验都是在课堂上完成,
只有到第五、六个Lab要写一些简单的 C,第七、八个Lab要写 Verilog,
其他几乎都没有回家作业 XD 那平常在课堂上做些什麽呢?
一开始也许会觉得很无聊,因为几乎都是照着一个个 Lab 的步骤做而已,
一个指令一个动作,不让人觉得有什麽意义,不过这都是学期初的肤浅念头而已,
原来前几个 Lab 都是基本功啊!建议要清楚弄懂每个步骤的意义,
回去报告才写得出东西,不懂的记下来下次上课可以问教授,
这样学起来会比较紥实,相较於照步骤弄弄草草结束会学得更多才是。
Lab2 → install PCM7230 bootloader 、install kernel and ramdisk.
这一块实验主板其实也是 Linux 系统,至於上面这些东东是啥呢?
等你来修课就知道了XD
基本功还要学着 recompile kernel、modify root file system
再来是架 NFS (network file system) 有点像是网路硬碟,
其方便性在於不必每次都一直重制 ramdisk ,
可以直接把修改的资料丢进PC端的指定资料夹内,
印象很深刻的一段指令XD 每次进 minicom 时都要打的:
mount -o loop ramdisk /mnt/initrd (enter)
/etc/init.d/nfs start
挂载完才进入 minicom 登入 PCM 板上的 embedded Linux。
这块实验板的功能相当强大,也有网路介面,
当作一个 server 可以用 telnet 连上去,
所以我们也学着用 debugger ,进行远端除错的练习。
到了 Lab4 要学着 build toolchain and ramdisk
不过因为自己 build toolchain 要花很长时间,
再加上也许过程中有了什麽小失误,所有时间就都白费了,
所以教授让我们跳过直接练习 build ramdisk ,
到了这边基本功就大致告一段落,学会 recompile kernel 和 build ramdisk,
这是 embedded Linux 的两大元件,也许这样讲不大明白,
亲自体会过就会了解,可以设计符合自己所需的 embedded Linux 环境,还不赖!
Lab5 开始要写个 C program,因为是练习用 Serial port
让 PC 端跟 PCM 板沟通,教授上课会介绍 RS232,baud rate 的设定、
一些会用到的 flag 跟 function,我们要改写助教的程式,
助教的范例程式是能够在某一方送出字串让另一端接收字串,
而我们得写个登入程式,能够检查3组帐号密码的简单程式,
会需要一些档案处理,因为帐号密码是内建在某个档案中,
其实也不会花太多时间,只是我那时想得太复杂,把自己搞昏头了哩XD
Lab6 学写一些简单的 Linux device driver,
这个 Lab 我没花很多时间去研究,算是比较可惜点,
因为最後要 Demo 的很简单,只要写一个 C program,
能够写入一些内容进 driver ,再把资料从 driver 读出来,
至於 driver 如何写,教授上课会上很久,自己也要花一点时间去看资料才行。
功力够深以後再外接些 device 到 PCM 板可以自己写 driver 喔!!!
噢对不得不提一下,这门课是下午三点二十开始,
可是几乎每次讲解课都会讲到五点半吧 XD
讲完两个小时才会上去Lab上机实作,通常做到几点是看实力,
快的人也许六七点,不过
摸到八九点的经验也是有.....
总计上课时间不算短,不过要几点走是自己决定,没做出来有事也可以跑,
只要再找助教约时间补 Demo 就好了。
对 driver 有个简单认知後,接下来就好玩了,
因为开始会把PCM板跟FPGA板桥接起来,而且这个 FPGA 板好像要五六千块,
以前逻设实验小小块好像玩具XD (一人一块~~~,PCM板也是一人一组。)
上面的东西应有尽有啦,想玩玩看是什麽感觉吗?来修就对了!
桥接起来以後,就可以利用 PCM 板去控制 FPGA 板了,
可以直接从终端机执行所写的 C program ,将值写进 SRAM 里,
让 FPGA 可以读取,Input 不再是拨动 DIPSW 或按按 push botton,
为什麽要这样做呢?如果说我们把这个概念延伸,
假设我们身在国外或是某个遥远的彼端,现在网路如此普及,
我们可以透过网路连到某个伺服器(此即为 PCM 板的角色),
再透过这个 server 去控制周边的 device (就像这边的 FPGA 板),
这大概就是这门课要学的东西了,其实还蛮有趣的XD
Lab7跟8要写 counter,修过逻设实验的人应该都不会觉得很难,
只是要先了解SRAM的读写机制,还有看看助教写的 FSM 如何控制一些 flag,
弄懂以後要改写就不难。
Lab8 则是学 blocking 跟 nonblocking 的 interrupt 的差别,
用这两种不同方式改写 code,上面提到的是啥来修完课就会了解了。
总之这门课很多东西可以学,大致介绍到这里。
大概会有人想问操不操的问题,这门课几乎是用上课时间做,
回家只要写写实验报告就交差了,而需要花比较多时间的是 final project,
可能要花一点时间想题目,在开始做之前要先上台简报一下构想,
教授搞不好会觉得你做的东西没意思,会帮你想些有的没的XD
不过难易度是自己决定的,只要不要想做太复杂的东西,应该也很快就能搞定。
补充:
不得不提一下XD 因为是硬体难免会有意外...
做不出来有时不是人的问题, 是硬体的问题...
我曾经遇过1小时前还能telnet到板子上, 过一小时要demo发现挂了...
结果後来检查刚好我那台电脑的网路线寿终正寝了...
还有同学不知道怎的不小心把抽取式硬碟的东西洗掉,
可能是Cent OS 跟 板子的embedded linux介面很像, 不小心犯了一些失误,
於是只好所有东西重做了, 刚另外一位修课者要我补充的, 就这样!
运气很好去年修课的时候正好换一批新板子, 问题应该会比往年少很多,
自己注意一下, 白白花很多时间没有结果时, 要想想是不是有东西坏了。
总成绩: 99 (1/11)
其实这门课每个 lab 都有demo出来,报告都有交,final如期完成,
分数一定在
90以上 XDD 这是电机系少数可以碰硬体实作的课,
有兴趣的人可以修看看。
--
※ Origin: 枫桥驿站<bbs.cs.nthu.edu.tw>
◆ From: zain523 @140.114.210.60
△ chococoo:
推荐这位优秀的学长 01/06 21:13
─ zain523:
楼上是以眼还眼吗 ="= 01/06 21:25
△ wju1230:
推荐这位优秀的学长 01/06 21:46
△ JYpink:
推荐这个台客帅男! 01/06 22:00
─ zain523:
...... 01/06 22:03
─ kaster:
推荐超强阿狗!! 01/06 22:04
─ zain523:
看一下置底文不要乱推吼XD 01/06 22:13
△ jerryjhang:
原PO很爽XD 01/06 22:47
─ andylee:
原来阿狗是神中H = =+ 01/06 23:23
△ ryanlei:
感谢分享<(_ _)> 01/07 00:56
△ gattolai:
推~!!强者XDD 01/07 01:48
─ bobwei:
推荐这位超强的学长!! 01/07 02:04
△ RainRain:
阿狗真是太厉害了 01/07 12:34
△ kerker:
推荐这篇文章 01/07 15:36
△ sagygygy:
神人学长出现了 01/07 19:32
─ zain523:
呃, 学期中开始要写code, 记得把verilog跟C捡回来... 01/07 21:56
─ zain523:
不然可能会很辛苦... 印象中有一些人被卡住, 提醒一下。 01/07 21:56
─ zain523:
刚阿博说补充一下硬体有时会坏掉的情形。 01/07 22:44
△ zero271828:
学友实在是太神了~ 01/07 22:46
zain523 於 2009/01/07 Wed 22:50:13 从 140.114.210.60 修改
△ lulumie:
阿狗真男人! 01/08 00:15
─ fred7798:
看完之後我决定还是别修好了 = = 01/09 17:57
△ athlun:
JJ6加持过的课就是不一样 XD,背景知识越多,学得越多哦 01/10 17:10
─ keterwang:
阿狗立身!!! 01/10 21:37
─ zain523:
这样讲很有道理,随着课越修越多再回头就会有恍然大悟之感 01/10 22:44
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: candog (140.114.206.139), 02/15/2017 01:59:00