Difference between revisions of "Tim's Tips and Tricks"
(→Git tips) |
(→board handling: add uart-finding tip from Todd) |
||
Line 44: | Line 44: | ||
*** board console access, reboot, run arbitrary commands, reset | *** board console access, reboot, run arbitrary commands, reset | ||
*** filesystem access (copy from/to) | *** filesystem access (copy from/to) | ||
+ | |||
+ | Finding the ttyUSB* for a board connected to a multi-port hub: | ||
+ | (Credit to Todd Fischer of RidgeRun): | ||
+ | A recurring problem I had was finding the right /dev/ttyUSB? device. I | ||
+ | have a nice USB to 4 serial port adaptor in a metal box I have screwed | ||
+ | to my bench. I also use several USB serial dongles. For reasons I | ||
+ | don't understand, they change association (at least under Ubuntu). I | ||
+ | created two scripts lsuart and uart. The output of lsuart gives me | ||
+ | information about the serial ports, like | ||
+ | |||
+ | Available USB UARTs | ||
+ | ------------------- | ||
+ | a:/dev/ttyUSB0 FTDI USB Serial Device 0000:00:04.1-4.1 (4 port jack A) | ||
+ | b:/dev/ttyUSB1 FTDI USB Serial Device 0000:00:04.1-4.2 (4 port jack B) | ||
+ | c:/dev/ttyUSB2 FTDI USB Serial Device 0000:00:04.1-4.3 (4 port jack C) | ||
+ | :/dev/ttyUSB3 pl2303 0000:00:02.1-4.2 () | ||
+ | d:/dev/ttyUSB4 FTDI USB Serial Device 0000:00:04.1-4.4 (4 port jack D) | ||
+ | |||
+ | In use | ||
+ | ------ | ||
+ | /dev/ttyUSB4: 9705: picocom -b 115200 -r -l /dev/ttyUSB4 | ||
+ | |||
+ | I gave names (a, b, c, d) to the 4 fixed uarts. Now I look at which | ||
+ | port my serial cable is plugged into - say the 3rd one, which I call c, | ||
+ | and I can fire up picocom with the standard setting using | ||
+ | |||
+ | uart c | ||
+ | |||
+ | Sometimes I can't find a terminal session (too many windows open), so I | ||
+ | use the PID from the In use section of the lsuart output to kill it. | ||
+ | |||
+ | If others have the "where is my USB serial port" problem, I can love up | ||
+ | my shell script (lsuart is a symbolic link to uart), which is around 200 | ||
+ | lines of ugly sysfs parsing. | ||
+ | ---- | ||
=== personal productivity === | === personal productivity === |
Revision as of 11:28, 23 October 2012
Contents
Sources
- Hugh Blemings - Learning Kernel Hacking from clever people - elc-us-2008-slides-final.pdf
Ideas for individual tips
Git tips
- git describe <commit>
- git describe --contains <commit>
- git log <file> # narrow scope of log
- git log <dir>
- git lg [<dir_or_file>] # nice summary
- alias.lg=log --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr %an)%Creset' --abbrev-commit --date=relative
- git annotate <file> | grep <regex of interest> = who did this?, when did it get changed to this?
- git show <commit_of_interest> = why is it here?
- git bisect
- how to do a git alias
- git proxy (finally!!)
patch management
- quilt - patches as first class objects
- git for development work, then convert to quilt patches
- git rebase --interactive
- precommit - quilt pop -a, basediff, quilt push -a, scripts/fix-filemodes.sh
- diffinfo - my own tool for managing patches
- splitting a patch: splitpatch - tool to break patches apart
board handling
- consistent board setup (including remote access)
- connections: serial, network, power (web-based control) [images]
- power port controller [image]
- Usually use tftp boot kernel, with NFS rootfs
- but can do other setups: feed kernel through serial line, put kernel on SD card using known-good kernel, etc.
- connections: serial, network, power (web-based control) [images]
- ttc - command line tool for board control
- abstracts differences between boards
- allows for board sharing (ttc reserve)
- everything is scritable, and remotable
- object-oriented: inheritance to quickly modify attributes of a board "class"
- items abstracted:
- kernel source, toolchain, architecture, defconfig, kernel image name, tool paths
- kernel build, install
- board console access, reboot, run arbitrary commands, reset
- filesystem access (copy from/to)
Finding the ttyUSB* for a board connected to a multi-port hub: (Credit to Todd Fischer of RidgeRun): A recurring problem I had was finding the right /dev/ttyUSB? device. I have a nice USB to 4 serial port adaptor in a metal box I have screwed to my bench. I also use several USB serial dongles. For reasons I don't understand, they change association (at least under Ubuntu). I created two scripts lsuart and uart. The output of lsuart gives me information about the serial ports, like
Available USB UARTs ------------------- a:/dev/ttyUSB0 FTDI USB Serial Device 0000:00:04.1-4.1 (4 port jack A) b:/dev/ttyUSB1 FTDI USB Serial Device 0000:00:04.1-4.2 (4 port jack B) c:/dev/ttyUSB2 FTDI USB Serial Device 0000:00:04.1-4.3 (4 port jack C) :/dev/ttyUSB3 pl2303 0000:00:02.1-4.2 () d:/dev/ttyUSB4 FTDI USB Serial Device 0000:00:04.1-4.4 (4 port jack D)
In use ------ /dev/ttyUSB4: 9705: picocom -b 115200 -r -l /dev/ttyUSB4
I gave names (a, b, c, d) to the 4 fixed uarts. Now I look at which port my serial cable is plugged into - say the 3rd one, which I call c, and I can fire up picocom with the standard setting using
uart c
Sometimes I can't find a terminal session (too many windows open), so I use the PID from the In use section of the lsuart output to kill it.
If others have the "where is my USB serial port" problem, I can love up my shell script (lsuart is a symbolic link to uart), which is around 200 lines of ugly sysfs parsing.
personal productivity
- my workflow:
- different day for each topic area
- today script
- multiple todo's, NOTES all over the place (several in each work directory)
- must do a context save in each directory, before moving on
- git branch is essential - commit changes (even if flaky) before moving on
- my favoriate mailing lists:
- sorry, but linux-embedded seems to be dead
- lkml, linux-arm, yocto-devel
- celinux-dev
- attend conferences, talk to smart people
- conferences I attend:
- ELC, ELCE, linuxcon US, Linuxcon Japan, Linuxcon Europe (by serendipity)
- what about plumbers?? other regional events??