IPad Pro 生產力 邊看網頁 邊筆記 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 - 6月 20, 2020 如何在ipad pro 邊看網頁 邊做筆記 (ipad os)Safari選取(標示)後就可以開使做筆記.最後再選則存成pdf檔案,日後就可以用再複習編輯。 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 留言
Raspberry Pi (ARMv6)上自幹一個微小作業系統 - 3月 21, 2015 大約半年前,我加入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、沒有驅動程式構架。 ... 閱讀完整內容
Linux VLAN 筆記 - 1月 26, 2015 Linux VLAN 筆記 kernel 開啟802.1q功能後,便可以透過簡單指令,設定VLAN. brctl delif br0 ath0 brctl delif br0 eth0 vconfig add ath0 555 vconfig add eth0 555 ifconfig ath0.555 up brctl addbr br555 brctl addif br555 ath0.555 brctl addif br555 eth0.555 ifconfig ath0.555 up ifconfig eth0.555 up ifconfig br555 10.0.0.11 up Wireless AP mode運作正常,抓無線封包有看到帶了VLAN ID 555. 不幸的是,我的Wireless STA,不能成功ping到我的AP,只好下去看程式,這邊有幾個部份要看. 1. Linux kernel 802.1q 2.Wireless driver.(我手邊的是Atheros proprietary LSDK driver,所以這部份內容都不會放上來) 3.hostapd跟wpa_supplicant. Linux的net_dev是用一個list串起來,每個net_dev都有會呼叫ev_queue_xmit ->dev_hard_start_xmit ,去傳送封包至下一步。 vlan.c::vlan_proto_init()時會invoke,dev_add_pack(&vlan_packet_type); static struct packet_type vlan_packet_type __read_mostly = { .type = cpu_to_be16(ETH_P_8021Q), .func = vlan_skb_r... 閱讀完整內容
C語言,大數運算,階層筆記 - 6月 26, 2014 如果今天要用C語言計算50!,int都是不夠用的。 要解這樣的問題,必需要用陣列。 32位元系統unsigned int 最大 4,294,967,295 (10位數字) 64位元 uint64_t 18,446,744,073,709,551,615 (20 位數字) /*從array的高位元開始存值*/ void Big_factorial_iteration(int n) { int i=1; /*init array*/ int a[SIZE_A]= {0}; int tail=SIZE_A-1; a[tail]=1; for(i=1; i <= n ; i++) { int j; /* multiply the value */ for(j= tail ; j >= 0 ; j--) { a[j]=a[j]*i; } /*進位留下個位數,其餘的加點前一位 */ for(j= tail ; j >= 0 ; j--) { if (a[j] >= 10) a[j-1]=a[j-1]+(a[j]/10); a[j]=a[j]%10; } } for(i=0; i< SIZE_A ; i++) { printf("%d",a[i]); } printf("\n"); } int main() { printf(" %d \n",factorial_recursion(10)); printf(" %d \n",factorial_iteration(10)); Big_factorial_iteration(20); 計算20階層 } result: [carlos@localhost c_examples]$ ./factorial_2 3628800 3628800 000000000002432902008176640000 原始碼: https://github.com/tzuCarlo... 閱讀完整內容
留言