2019/1/16

xinput -- set each mouse's button mapping

有兩個mouse,一個左手用,一個右手,要怎麼設定呢?
ref: make mouse left handed-and-right-handed

就是使用 xinput 這個程式

debian default 沒有安裝,所以要用 apt-get install
jessie431:~$ xinput
⎡ Virtual core pointer                     id=2 [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer               id=4 [slave  pointer  (2)]
⎜   ↳ Kensington      Kensington Expert Mouse  id=10 [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad               id=13 [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                    id=14 [slave  pointer  (2)]
⎜   ↳ Logitech USB Optical Mouse               id=16 [slave  pointer  (2)]
⎣ Virtual core keyboard                    id=3 [master keyboard (2)]
    ↳ Virtual core XTEST keyboard              id=5 [slave  keyboard (3)]
    ↳ Power Button                             id=6 [slave  keyboard (3)]
    ↳ Video Bus                                id=7 [slave  keyboard (3)]
    ↳ Video Bus                                id=8 [slave  keyboard (3)]
    ↳ Power Button                             id=9 [slave  keyboard (3)]
    ↳ Integrated Camera                        id=11 [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard             id=12 [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                   id=15 [slave  keyboard (3)]

會列出所有 input device,和 id

然後用 set-button-map 來分別設定 device 的 button mapping (left, right handed)

可以用 get-button-map 看一下現在的設定。

舉例來說,Kensington 是left handed, Logitech 要是 right handed
先看一下..
jessie431:~$ xinput get-button-map 16
3 2 1 4 5 6 7 8 9 10 11 12 
設成 right handed:
jessie431:~$ xinput set-button-map 16 1 2 3 4 5 6 7 8 9 10 11 12
jessie431:~$ xinput get-button-map 16
1 2 3 4 5 6 7 8 9 10 11 12 
這樣 Logitech (id=16) 的 button mapping 就變更了,其他 device 的 mapping 沒變。

2019/1/14

在 build/modules/highgui/CMakeFiles/opencv_highgui.dir/src/ 下,找到:
window_gtk.cpp.o, window.cpp.o

參考 source : modules/highgui/src 下的檔案,有:
window_carbon, window_cocoa, window_gtk, window_QT, window_w32

猜是 configure 時,根據系統選了 window_gtk.cpp

所以是用GTK。

imshow --> cvShowImage --> cvImageWidget

然後,這一篇 竟然是 X Windows 的 Simple Sample。

2019/1/7

nuttx on stm32f4discovery

要 build nuttx 要用到 kconfig-frontends的 kconfig-conf,這個 debian 沒有 package,所以要 build from source.
buttx 的 repo 也有一份,可以 用那一份..
clone tools 下來,裡面就有 kconfig-frontends
看一下 INSTALL,有說明, default install path 是 /usr/local/bin,可以在 configure 時用 --prefix=PREFIX 來指定新的 install path
再參考 README.txt,裡面也有一個section 說明 kconfig-frontends. 配合..
cd tools/kconfig-frontends
./configure --disable-shared --enable-static --enable-mconf --disable-nconf --disable-gconf --disable-qconf 
            --disable-nconf --disable-utils --prefix=/home/charles-chang/nuttx-git/bin/
make 
make install
然後看看,kconfig-conf install 在 /home/charles-chang/nuttx-git/bin/bin 下。
寫好 exportpath.sh 把這個 加到 PATH 中。

然後參考這裡 說的..
cd nuttx
tools/configure.sh stm32f4discovery/usbnsh 
make menuconfig
修改一下 build-host 平台,是 Linux (default 是 Windows)
然後 make ,就完成了。

因為沒有 build 出 dfu,所以用 st-flash 來燒 *.bin,這會用到 SWD 那一端的 USB..
PC 接上 USB 之後...
st-flash write nuttx.bin 0x8000000
這樣就燒完了。

燒錄的 USB改插到 USB Power 上,對面的 micro-usb 接上 pc..
dmesg 可以看到 /dev/ttyACM0 出現。
screen /dev/ttyACM0 接上之後,等 10sec..按下 ENTER 三次..
就可以看到出現 nsh> 的 prompt
-- 奇怪我沒有看到任何 app 在裡面,也沒有 bin 目錄.

記得要看一下 configs/stm32f4discovery/README.txt

這一篇 有 build for sim (模擬器)。
build 完可以至直接在 console 下 run..
差異就是在 tools/configure.sh 的命令..

2019/1/4

ref: add module in micropython

module 要宣告 MP_QSTR___name___,後面的就是 module name

所以 grep 一下,發現...omv 的都出現在 omv/py/ 下。

try add py/py_image.c:

micropython 有用 cmsis library, 放在 lib/cmsis 中。
openmv 有獨立的 cmsis 目錄,但是他的 micropython 目錄中,依然有 lib/cmsis,
但是 Makefile 已經沒有把他放到 include path 中。而是用外部那格獨立的 cmsis 目錄。

2019/1/2

micropython on STM32F4 Discovery Board

follow 前面幾篇,安裝 gcc-arm-none-eabi 和 dfu-util
clone source and build:
git clone https://github.com/micropython/micropython.git
cd micropython
git submodule update --init
cd port/stm32
make BOARD=STM32F4DISC
使用 dfu 燒錄。
follow 前一篇,短路 BOOT0, VDD,開機 (mini-A usb)
插入 micro-usb,..
make BOARD=STM32F4DISC deploy
如果抱怨 ubs.core 找不到,就要..
pip install pyusb
download 完後,移除 dfu mode JMP (BOOT0-VDD),reset 後。
接上 microusb,pc 上會出現 ttyACM0,
使用 minicom -D /dev/ttyACM0 連上後,出現 >>> prompt,可以輸入micropython 指令.
list help content..
>>help()
test LED
led1 = pyb.LED(1)
led1.toggle()
可以看到 紅色 LED 亮起來。


重點:

micropython 很多 port (在 port 目錄下可以看到)。
但是每一個 port/XX/Makefile 的內容都差不多,
其中的 BOARD 參數並不會改成該 port 的 board name。
所以即使只經在 port/stm32 下,make 時還是咬指定 BOARD=STM32F4DISC
不然就要自己改 Makefile.

help() 有寫,soft reset 的命令是 "CTRL-D"
PYB: sync filesystems
PYB: soft reboot
MicroPython v1.9.4-772-g1db37a783 on 2019-01-04; F4DISC with STM32F407
Type "help()" for more information.