程式碼

2022年7月26日 星期二

Raspberry Pi 4B的各種折騰.

 大概去年的這個時間從美亞上買了樹莓派4B 8GB,當初含散熱器也才3千台…跟一年後的現在比差有夠多的…入手了之後目的是作為Linux Desktop使用,所以各種研究(折騰),又是超頻又是跟上最新的版號…估計大概重作了二十幾次系統…希望可以一直用到Ubuntu 22.04 EOL再換下一個LTS。


目前總算是相對穩定了,所以作個紀錄總結一下…

2022年3月30日 星期三

Openwrt 21.02 MX25L25635E 無法soft reboot


    原因是在於Kernel 5.4.179在回復狀態時, 多作了一個flag的檢查 SNOR_F_BROKEN_RESET. 目前看起來這個flag是為了在開機的時候有狀況而作的. 解決方式就是把它拿掉... 

下面是修改前的樣子.
void spi_nor_restore(struct spi_nor *nor)
{
    /* restore the addressing mode */
    if (nor->addr_width == 4 && !(nor->flags & SNOR_F_4B_OPCODES) &&
        nor->flags & SNOR_F_BROKEN_RESET)
            nor->params.set_4byte(nor, false);
}
下面是修改後.
void spi_nor_restore(struct spi_nor *nor)
{
    /* restore the addressing mode */
    if (nor->addr_width == 4 && !(nor->flags & SNOR_F_4B_OPCODES))
            nor->params.set_4byte(nor, false);
}
   


    下面是碎碎唸....
    之前為了MX25L25635E在Openwrt 19.07上boot開機的問題搞了好一陣子. 看到不少人講21.02已經修正這個問題. 想說總算不用那麼麻煩換版本還要改code的... 沒想到還是遇到了.
    其實去年中就有試過21.02發現Reboot還是會卡在System Restarting... 想說最近有了21.02.2了也是一樣, 應該是Kernel版本沒有變的關係吧...
 
    目前看起來21.02修正的內容應該是對那種本身有4B OPCODE的flash, 因為那些可以直接下READ4B/WRITE4B的命令, 而不需要執行EN4B/EX4B的flash. 像是MX25L25635F. 也就是因為沒有進到4 byte addressing mode, 所以重開機不受影響. 而MX25L25635E是需要的, 所以還是gg了.


    雖然最後發現拿掉那個判斷是最快的 但不是正式的, 看了比較新的source code那邊寫法又不一樣了, 等導入了再說吧. 到時候不要再折騰一次就好.

2021年2月8日 星期一

從Openwrt Release的版本中修改dts並且重新封裝.

     由於手邊有一片比較特別的板子, 是MT7620A+MT7530的評估板(EVB). 而Openwrt對這塊板子的dts與實際上略有不同. 主要是在於factory區段. 原廠是將MAC Address與WIFI一些資料放在MTD2當中, 而Openwrt的DTS則沒有指定. 以致於WIFI部份需要將/dev/mtd2的前512kb倒至/lib/firmware/soc_wmac.eeprom才會正常辨認到無線晶片. 

#dd if=/dev/mtd2 of=/lib/firmware/soc_wmac.eeprom

    而第二個問題是有線網路的MAC Address也會因為dts沒有指定到正確的位置, 所以每一次開機都會產生隨機的位置, 雖然對於使用上沒什麼問題...

    是可以重新編譯image來克服這些, 但是DTB的修改在一般的操作上只能在master下作修改, 但是這會造成package只能安裝自行編譯的版本... 這一點在操作上比較不方便. 若是使用官方Release的版本則是只能使用固定的DTB. 但是固定的DTB就是會有不方便的情況發生...

 

2020年10月5日 星期一

IGMP Snooping

 三月初時寫了篇VLAN的應用在MOD上 後來三不五時的被時下的802.11KVR網路所吸引  

看了幾台備選的機種

Asus Lyra Trio MAP-AC1750 (QCA9563+QCA8334+QCA9880)

TP-Link Deco M4 (IPQ4019)

Zyxel Multy U (RTL8198CS)


後來在Lyra Trio的官方image當中發現有swconfig的程式可以規劃VLAN

又見到拍賣上三入組有比較便宜的價錢 就衝了. 只是發現沒辦法改開機程式 官方寫死在/sbin/rc當中


看來官方的firmware是無望用VLAN了, 只好試著將當初沒研究完的IGMP Snooping再翻出來看一遍. 只是設備與當時多了台HP J9298A的POE帶管理的交換器 為了要接POE的IPCAM

2020年3月5日 星期四

OPENWRT與DD-WRT 組合應用於IPTV的環境當中. VLAN設定

因為種種原因, IPTV set-top box 必需與Modem直接連線, 在自家透天厝的環境當中就得需要拉兩條網路線才能夠同時提供無線上網的涵蓋, 以及IPTV的觀看.

目前每台電視旁邊都放了台無線AP(兩台TPLINK Archer C8與一台Linksys WRT1200AC). 同時也已經拉好網路線接上了, 不想再拉第二條線讓線變得複雜, 而且Modem本身只提供4 Port的接口, 而目前已經用了3個了 (長輩網路用, 第一台STB, 無線網路), 而剩的一個則是保留, 如果有需要對Modem作修改的時候用的...

預期是要有下圖般的網路, 其中右下角的三台STB是要等設定完才會正常動作.

2016年6月29日 星期三

Linux console 無線網路的連接 WPA/WPA2

寫一下幫助記憶.

0. 先把介面給up起來
sudo ip link set wlan0 up

1. 產生相對應的WPA Key
wpa_passphrase SSID_NAME WPA_KEY > CONFIG_FILE

2. 與WPA AP作連線.
sudo wpa_supplicant -D wext -i wlan0 -c CONFIG_FILE
此時會變成前景執行. 因此這邊就Ctrl+Z然後再bg一下

3. 連線完成之後再透過dhcp取得ip.
sudo dhclient wlan0


結束. 對 就這麼簡單


看起來重點是在於wpa_supplicant的部份~
哦~~ wpa_supplicant支援背景執行以及pid_file.
所以這時候就要來寫個start stop script給它開機跑惹.

2011年8月30日 星期二

Crystal Oscillator 頻率量測

Crystal Oscillator 晶體震盪器
是一種壓變型的震盪器 利用電壓差於晶體的兩側 使其晶體產生形變
形變之後原先接觸於電極端的接觸點開路 開路之後再次產生形變回復成原先的形狀
原先的形狀會再與電極端接觸 再次產生形變
依此循環而產生波形頻率.
線路結構上會有XTAL_OUT, XTAL_IN

晶體的形變需要在線路的兩個極點增加對地電容
震盪出來的頻率才會穩定~
而傳統設計在對地電容會有3倍,3倍的設計上會使得震盪器較容易起震
現今的設計上較少使用到3倍電容值的設計.

其電性的等效參數 會考慮到IC內的電容、震盪器內部電容、外部對地電容
經過計算後會得到一個負性電阻~ 該負性電阻的阻值越高(指負的越多)
會讓晶體震盪得更穩定 對溫度的特性也會更好.

一般在量測上會有三種方式
1. Oscilloscope 示波器
2. Counter 計數器
3. Spectrum 頻譜分析儀

前兩種方式是使用探測棒(Probe)接觸 但是Probe本身大約會有50pF的容值存在
此會影響到整體震盪的等效電路電容值改變
有可能會使得原本不震而震 或是該震的而不震
也有可能造成量測的頻率與實際頻率有差異

第三種方式是將Probe放置在線路的防焊層上 較不易因為 Probe內電容造成參數的改變
但是Spectrum的價格上較高 使用上也較不簡便~



今天實驗了另一種方法
將原先震盪器的線路斷掉,改接一條較粗的漆包線…
並在漆包線外圍使用長度約10cm 較細的漆包線纏繞
利用電磁的特性去感應粗漆包線上因震盪而發散的磁場

使用Probe接觸細漆包線上的裸銅處,Probe的Ground接觸待測物的Ground。
用Scope或Counter量測頻率

此種方法不會因為探棒的電容特性而改變震盪線路的等效電容
在量測上較為客觀。

補參考連結
TXC 台灣晶技
這篇算是介紹得不錯