Boot sequence 분석
/Firmware/ROMFS/px4fmu_common/init.d
- system console 보기
PX4에서 NSH접속하기
준비물
- picocom 또는 screen 터미널 프로그램
- ftdi232 3.3v 모듈 Pixhawk SERIAL 4/5 포트의 4(TX),5(RX),6(GND)에 연결
- 또는 SD 카드를 뺴고 usb 시리얼포트로 접속한다.
sudo apt-get install picocom
picocom /dev/tty.usbserial-AH01JABI --baud 57600
cd Firmware/Tools
python mavlink_shell.py /dev/ttyACM0
NSH 사용하기
help
실습: tone_alarm app 소리를 내고 소리를 꺼보자.
nsh> tone_alarm MBAGP
nsh> tone_alarm MLL32CP8MB
rcS 읽어보고, 수정하기
nsh> cd /etc/init.d
/Firmware/ROMFS/px4fmu_common/init.d/
해보기
- rcS에서 uORB 가 실행되는 부분을 찾아보자.
- rcS안에 있는 tone_alarm app을 삭제하여 부팅시 소리가 나지 않도록 만들어 보자.
- tone_alarm app을 수정하여, 부져소리의 음높이가 낮아지도록 만들어 보자.
Mixing
airframe layout 세팅하기
http://dev.px4.io/concept-mixing.html
/Firmware/ROMFS/px4fmu_common/init.d/
해보기
- init.d 폴더안에 있는 mixer 설정을 읽어보자.
Boot Log
Firmware/NuttX/apps/nshlib/nsh_script.c
nsh_initscript()`
nuttx-configs/px4fmu-v2/nsh/defconfig
1480:CONFIG_NSH_INITSCRIPT="init.d/rcS"
Firmware/ROMFS/px4fmu_common/init.d/rcS
- system console 보기
- 실습: tone_alarm app 삭제/수정
sercon: Registering CDC/ACM serial driver
sercon: Successfully registered the CDC/ACM serial driver
nsh: mount: mount failed: No such device
nsh: mkfatfs: mkfatfs failed: No such device
param: selected parameter default file /fs/mtd_params
[param] Loaded: /fs/mtd_params
rgbled on I2C bus 2 at 0x55 (bus: 100 KHz, max: 100 KHz)
1: SYS_USE_IO: match
4001: + SYS_AUTOSTART: match
px4io: CRCs match
dataman: Could not open data manager file /fs/microsd/dataman
dataman: dataman start failed
MS5611_SPI on SPI bus 1 at 3 (20000 KHz)
bst: no devices found
adc init done
ver hwcmp match: PX4FMU_V2
hmc5883: no device on bus 2
hmc5883: no device on bus 1
mpu6000: driver start failed
MPU6000 on SPI bus 1 at 4 (1000 KHz)
L3GD20 on SPI bus 1 at 1 (11000 KHz)
LSM303D on SPI bus 1 at 2 (11000 KHz)
meas_airspeed: no MS4525 airspeed sensor connected
ets_airspeed: no ETS airspeed sensor connected
ets_airspeed: no ETS airspeed sensor connected
nsh: sf10a: command not found
px4io default PWM output device
mavlink_if0: mode: 0, data rate: 1200 B/s on /dev/ttyS1 @ 57600B
mavlink_if0: offboard mission init: ERROR
ver hwcmp match: PX4FMU_V2
157600: SYS_COMPANION: match
mavlink_if1: mode: 3, data rate: 1000 B/s on /dev/ttyS2 @ 57600B
[i] MULTICOPTER
[i] Mixer: /etc/mixers/quad_x.main.mix on /dev/pwm_output0
[i] Mixer: /etc/mixers/pass.aux.mix on /dev/pwm_output1
1: INAV_ENABLED: match
[i] No microSD card found
ver hwcmp match: PX4FMU_V2
px4flow [189:100]
nshterm [190:70]
NuttShell (NSH)
nsh> px4flow: scanning I2C buses for device..
mavlink_if1: Disabling hardware flow control
commander_low_prio: settings saved.
mavlink_if0: Disabling hardware flow control
PX4 PreBoot
nuttx부터 읽기 ..;
- nuttx stm32_start.c // This is the reset entry point. https://github.com/PX4/NuttX/blob/3009fb230ec8232c4c4fd7798fd70ea9632692ec/nuttx/arch/arm/src/stm32/stm32_start.c
- ??? g_readytorun 어떻게 앱 실행하냐? ? task_activate https://github.com/PX4/NuttX/blob/3009fb230ec8232c4c4fd7798fd70ea9632692ec/nuttx/sched/task_activate.c