以下方式都是在command 模式,(按小寫i 就會切換到編輯模式,在按一次ESC會切到command模式)
1. 將游標移到字串上,直接按"*" ,可以直接做向下搜尋
2. 輸入"/", 接著輸入字串,可以向下搜尋此字串,接著按"n",可以向下搜尋,按"N",可以向上搜尋
3. 按下"?", 接著輸入字串,可以向上搜尋字串,接著按"n",可以向上搜尋,按"N",可以向下搜尋
4. 按下":",輸入"set num",可以列出整篇文字檔的"行號"
以下方式都是在command 模式,(按小寫i 就會切換到編輯模式,在按一次ESC會切到command模式)
1. 將游標移到字串上,直接按"*" ,可以直接做向下搜尋
2. 輸入"/", 接著輸入字串,可以向下搜尋此字串,接著按"n",可以向下搜尋,按"N",可以向上搜尋
3. 按下"?", 接著輸入字串,可以向上搜尋字串,接著按"n",可以向上搜尋,按"N",可以向下搜尋
4. 按下":",輸入"set num",可以列出整篇文字檔的"行號"
今天在開發platform的時候,準備要把編譯好的 NXP BT module 做insert的動作,卻出現了如下面所列的錯誤訊息:
insmod: ERROR: could not insert module hci_uart.ko: Unknown symbol in module
[ 79.719642] .(1)[5227:insmod]hci_uart: Unknown symbol hci_free_dev (err -2)
[ 79.719810] .(1)[5227:insmod]hci_uart: Unknown symbol hci_alloc_dev (err -2)
[ 79.719875] .(1)[5227:insmod]hci_uart: Unknown symbol hci_unregister_dev (err -2)
[ 79.719889] .(1)[5227:insmod]hci_uart: Unknown symbol hci_recv_frame (err -2)
[ 79.719927] .(1)[5227:insmod]hci_uart: Unknown symbol hci_register_dev (err -2)
以下我們將一步步來說明,如何找出這個問題的原因
1. 首先我們先到linux kernel driver底下,我們使用grep 來找一下,到底哪裡實作了 hci_free_dev()
# grep -rn hci_free_dev
結果找到的都是呼叫此function的地方,於是我們再往上一層路徑去尋找
假設我現在的Source code有git資訊,也就是可以用 "git status" 或是 "git diff" 等指令來查看目前狀態或是差異
假設我目前修改了檔案,路徑與檔名為
/home/danny/src/example/aaa.c
當前所在目錄為 /home/danny/ 底下
打一個patch(讓別人Merge你的修改)
於是我們可以很簡單的,使用下面的命令,先打一個patch檔案
git diff src/example/aaa.c > aaa.c.patch
於是就會多出一個檔案,位於 /home/danny/aaa.c.patch
aaa.c.patch大概內容會如下,可以看到差異:
--- a/src/example/aaa.c
+++ b/src/example/aaa.c
@@ -33,7 +33,11 @@
- printf("Hello\n");
+ printf("Hello World\n");
如何把patch檔Merge入自己的code
假設我現在是在 /home/andy/ 目錄下,先把 aaa.c.patch 複製到此目錄底下
接著確定此檔案確實存在 src/example/aaa.c
使用以下指令把patch檔打入
patch -p1 < aaa.c.patch
這樣就可以了!!
首先 braces 中文意思為 "大括號",
而編譯出現這個錯誤訊息時,十之八九問題出在少了對稱的大括號,
因此請仔細檢查一下,是否漏了"{" 或是加錯地方.
當使用 echo 0 > /sys/class/gpio/export
kernel卻拋出 -sh: echo: write error: Device or resource busy
這表示此GPIO正被某個driver占用,因此你沒辦法申請這個GPIO來使用
而這個問題的解決方法,只能找出是哪個driver code, 做完 gpio_request()之後 卻沒有做 gpio_free()的地方
另外可以使用下面指令來查看那些gpio被占用
cat /sys/kernel/debug/gpio
=======================================================
另外下面記錄一些gpio操作的指令
第一步可以先ls /sys/class/gpio,有的可以從這邊看到gpio的base值
(例如base=268, gpio0在下面的操作就要echo 268+0, gpio10就會是 268+10)
1. request gpio
echo 0 > /sys/class/gpio/export
2. check dicrection value
cat /sys/class/gpio/gpio0/direction
3. change direction
echo out > /sys/class/gpio/gpio0/direction
4. check output value
cat /sys/class/gpio/gpio0/value
5. change output value to high
echo 1 > /sys/class/gpio/gpio0/value
6. free the gpio
echo 0 > /sys/class/gpio/unexport
前一篇文章有提過,跨區買eShop Switch 數位版遊戲,如果區域是俄羅斯聯邦,會有信用卡刷不過的問題,這時候就必須透過Paypal來付款
而Paypal綁定信用卡,會有兩種匯率可以選擇,預設會是使用Paypal的匯率,但這樣換算下來,會被收比較多的錢(Paypal收一次,信用卡收一次?),因此我們通常會設定成使用信用卡匯率,下面就一步一步以圖片來告知怎麼設定
Step1:
先登入Paypal官網 https://www.paypal.com/tw/home 登入後,如下頁面,接著點選左上角選單:
Step2:
接著點選齒輪圖案: