發表文章

iPad pro 2020 寫程式可行嗎?

圖片
我是位韌體工程師,工作內容是開發Linux 、RTOS上驅動程式開發。 平常習慣用工具是VS code 與Vim,使用的是Macbook air,macOS是 Unix-like作業系統,要裝VIM, microcom, openOCD都相當容易。 今天要來試試iPad pro 2020 沒有巧鍵盤情況下,是否能來開發程式,為什麼不買巧鍵盤了因為iPad pro 2020 11吋定價是25900,再加上巧鍵盤就比Macbook air貴了。 我在Linux server上裝了VS code server版本,使用Safari 是可以正常的看Code,但是網頁版本的VS code對觸控的支援不佳,函數定義跳轉也不正常,最重要的是下方的shell 打開vim後,就……跳不出來啦XD 我想iPad pro在不用巧鍵盤的情況下,是不適合做韌體開發的,但是拿來看文件,做筆記確實是相當合適,可以在datasheet 文件直接用觸控筆做註解,配合note app使用,還可以分享給同事,相當的方便。

Tesla CEO Elon Musk打電動嗎?

從Elon Musk的twitter 跟Reddit AMA (ask me anything)看來,Elon Musk是會打電動的, 會玩大亂鬥,魔獸爭霸,文明帝國與一些射擊動作類的遊戲。  原文網址: https://www.businessinsider.com/elon-musk-favorite-video-games-2017-6#8-warcraft-8

如何使用MQTT-Reactive打造Event-driven programming系統

本文是利用 MQTT-Reactive  開發reactive 系統的教學,MQTT在許多的IoT產品上很常用到, 文章裡教大家如何在IoT應用裡有系統的加入MQTT-Client 。 原文連結: https://www.embedded.com/implementing-an-mqtt-client-for-reactive-systems/

CMU buffer overflow attack作業筆記

圖片
三年前線上課程看到的,現在有空筆記一下,這是CMU的計算機組織課程的作業( https://www.cs.cmu.edu/~213/index.html ),應該是大二的課程。 作業可以在這邊載到( http://csapp.cs.cmu.edu/3e/labs.html ) 須要在x86–64的機器上執行.  作業給了一個有buffer overflow問題的程式bomb跟其原始碼bomb.c, 依難度大概有下面幾個層級 1.函數返回時利用buffer overflow去呼叫另一個不帶參數函數 2.函數返回時利用buffer overflow去呼叫另一個帶參數函數 3.利用buffer overflow去修改全域變數 4.最難的是利用buffer overflow去執行一段自己插入的程式(機器碼),然後要正常返回呼叫函數。 預備知識: 首先,先看x86–64 架構有什麼registers ,這邊 %rip:instruction pointer,用來指到下一個instruction的位置.  %rbp:Frame pointer,用來指到目前stack frame的開頭. %rsp:stack pointer,用來指到目前stack的top,也是尾巴。 sourece: Carnegie Mellon 1 Assembly and Bomb Lab 15-213: Introduction to Computer  x86的stack 是從高位往低位長的, 方向是rbp 往→ rsp ,caller呼叫函數時會把參數push(壓入)stack,接著呼叫函數,並把return的位址存在rbp+8的位置,接著把該含要用到的register值跟區域變數推入stack. 如下的程式Alpha呼叫Beta時,把引數23先推入stack,再呼叫Beta並先把返回位址推入stack. sourece: https://www.doc.ic.ac.uk/~herbert/teaching/CA05-Intel-5.pdf 題目一:函數返回時利用buffer overflow去呼叫另一個不帶參數函數 bomb程式有...

Raspberry Pi (ARMv6)上自幹一個微小作業系統

      大約半年前,我加入fb的F9 based JuluOS與黃敬群老師( Jserv) 成大嵌入式系統課程社團,我才發現原來台灣有那麼多人在研究作業系統開發,我也想試試開發一個小小的OS。      從0開始寫一個OS是相當有趣的過程,可以檢視自己對C、資料結構、作業系統、計算機組織的瞭解程度,誠實的面對自己,雖然自己在系統廠工作幾年了,還是很多基礎知識不足,也許這就是為什麼那麼多高手可以在ic design house,而我在系統廠吧,寫這個小OS,只是學習的開始,接下來我會多研究其它的OS,例如:xv6、F9 microkernel、freeRTOS...       我把開發流程一步一步記錄,從bare metal Helloworld,加入printk,配置MMU, IRQ中斷,記憶體管理(Buddy system),到最後加入system call、process fork與round robin scheduling,方便學習。        所有原始程式碼都放在github上:  https://github.com/tzuCarlos/RaspberryPi      我使用qmeu測試:      這邊有執行的結果: https://github.com/tzuCarlos/RaspberryPi/blob/master/mimiOS/RESULT      系統說明:         先拖稿一下,下班還要唸書,顧嬰兒很累的,改天有空補上一步步說明XD      未來工作:      1.把ARM的架構跟ARM組合語言弄熟。      2.系統memory map我還沒好好規畫,只是想到做什麼功能,就找一塊出來。      3. 沒有檔案系統,沒有shell、沒有驅動程式構架。       ...

vim + cscope + ctags + nerdtree + taglist + SrcExpl+trinity, c ya source Insight.

圖片
 Bought a MACbook air installed ubuntu+LXDE, time to say good bye to windows & source Insight. I tried eclipse to develop C about 1 month before, eclipse is nice tool to trace code, but somehow I still feel eclipse a bit laggy.        Finally, I use VIM, because both of MAC OS X and Linux have VIM.      website:  The NERD tree : A tree explorer plugin for navigating the filesystem download NERD_tree.zip unzip NERD_tree.zip  mkdir -p ~/.vim/plugin  mv plugin/NERD_tree.vim ~/.vim/plugin  vim ~/.vimrc add this line: nnoremap :NERDTree same producer to install taglist,  trinity,  and SrcExpl.  You may need a script to generate cscope and ctags index files. CSCOPE_FILE=cscope.out if [ -n "$1" ]; then  echo "Source code directory: " $1  echo "Create file map : " $CSCOPE_FILE  find $1 -name "*.c" -o -name "*.c" -o -name "*.h" -o -name "*.c" -o -name "*.S" > ...