1. 程式人生 > >樹莓派3的除錯串列埠問題的不完美解決:讓藍芽與除錯共存

樹莓派3的除錯串列埠問題的不完美解決:讓藍芽與除錯共存

問題

因為RaspberryPi3的BT與Debug串列埠共用,導致同一時間只能有一個可以使用,儘管也可以使用軟的UART1來控制BT,但是這樣子的話需要將CPU的頻率固定.

 而我們在實際開發中,在mount rootfs之前. 是需要用debug串列埠來檢視kernel啟動情況,是否有mount rootfs

解決方案

發現可以使用下面這兩種方式來解決

USB UART console

Network console

但是最終覺得還是使用USB UART console比較方便. 代價是需要買兩根USB轉串列埠線.

使用方法

硬體

直接將兩根USB UART的DB9介面的2,3,5用杜邦線連起來, 2與3需要交叉.

軟體方面

核心的支援

直接選中配置即可,同時依賴USB Serial驅動


下面是說明

同時選中自己的USB轉串列埠的晶片支援,例如ch341, cp2102

userspace的配置

在核心中選中了,我們還需要配置userspace的console引數

8250.nr_uarts=0 dma.dmachans=0x7f35 bcm2708_fb.fbwidth=1824 bcm2708_fb.fbheight=984 bcm2709.boardrev=0xa02082 bcm2709.serial=0x20d22efd smsc95xx.macaddr=B8:27:EB:D2:2E:FD bcm2708_fb.fbswap=1 bcm2709.uart_clock=48000000 vc_mem.mem_base=0x3dc00000 vc_mem.mem_size=0x3f000000  boot=/dev/mmcblk0p1 disk=/dev/mmcblk0p2 debug rootwait console=ttyUSB0,115200 root=/dev/nfs nfsroot=192.168.2.100:/home/hexiongjun/nfs/rpi3_qt ip=dhcp rootfstype=nfs smsc95xx.turbo_mode=N consoleblank=0

注意裡面的console=引數

同時還需要配置agatty

在/etc/inittab中注意配置:

l6:6:wait:/etc/init.d/rc 6
# Normally not reached, but fallthrough in case of emergency.
z6:6:respawn:/sbin/sulogin
USB0:12345:respawn:/bin/start_getty 115200 ttyUSB0
# /sbin/getty invocations for the runlevels.
#

至此就可以使用了,然後我們可以看到啟動的log了,也可以在串列埠進行互動了
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.4.17 (
[email protected]
) (gcc version 5.3.0 (GCC) ) #2 SMP Thu Aug 25 19:14:07 CST 2016 [ 0.000000] CPU: ARMv7 Processor [410fd034] revision 4 (ARMv7), cr=10c5383d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [ 0.000000] Machine model: Raspberry Pi 3 Model B Rev 1.2 [ 0.000000] cma: Reserved 8 MiB at 0x2e400000 [ 0.000000] Memory policy: Data cache writealloc [ 0.000000] On node 0 totalpages: 192512 [ 0.000000] free_area_init_node: node 0, pgdat 80a29080, node_mem_map add64000 [ 0.000000] Normal zone: 1692 pages used for memmap [ 0.000000] Normal zone: 0 pages reserved [ 0.000000] Normal zone: 192512 pages, LIFO batch:31 [ 0.000000] [bcm2709_smp_init_cpus] enter (9520->f3003010) [ 0.000000] [bcm2709_smp_init_cpus] ncores=4 [ 0.000000] PERCPU: Embedded 13 pages/cpu @aefaa000 s22540 r8192 d22516 u53248 [ 0.000000] pcpu-alloc: s22540 r8192 d22516 u53248 alloc=13*4096 [ 0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 190820 [ 0.000000] Kernel command line: 8250.nr_uarts=0 dma.dmachans=0x7f35 bcm2708_fb.fbwidth=1824 bcm2708_fb.fbheight=984 bcm2709.boardrev=0xa02082 bcm2709.serial=0x20d22efd smsc95xx.macaddr=B8:27:EB:D2:2E:FD bcm2708_fb.fbswap=1 bcm2709.uart_clock=48000000 vc_mem.mem_base=0x3dc00000 vc_mem.mem_size=0x3f000000 boot=/dev/mmcblk0p1 disk=/dev/mmcblk0p2 debug rootwait console=ttyUSB0,115200 root=/dev/nfs nfsroot=192.168.2.100:/home/hexiongjun/nfs/rpi3_qt ip=dhcp rootfstype=nfs smsc95xx.turbo_mode=N consoleblank=0 [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Memory: 742756K/770048K available (6904K kernel code, 465K rwdata, 2548K rodata, 488K init, 774K bss, 19100K reserved, 8192K cma-reserved) [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB) [ 0.000000] vmalloc : 0xaf800000 - 0xff800000 (1280 MB) [ 0.000000] lowmem : 0x80000000 - 0xaf000000 ( 752 MB) [ 0.000000] modules : 0x7f000000 - 0x80000000 ( 16 MB) [ 0.000000] .text : 0x80008000 - 0x809433e4 (9453 kB) [ 0.000000] .init : 0x80944000 - 0x809be000 ( 488 kB) [ 0.000000] .data : 0x809be000 - 0x80a32408 ( 466 kB) [ 0.000000] .bss : 0x80a35000 - 0x80af68d4 ( 775 kB) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] Build-time adjustment of leaf fanout to 32. [ 0.000000] NR_IRQS:16 nr_irqs:16 16 [ 0.000000] Architected cp15 timer(s) running at 19.20MHz (phys). [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x46d987e47, max_idle_ns: 440795202767 ns [ 0.000008] sched_clock: 56 bits at 19MHz, resolution 52ns, wraps every 4398046511078ns [ 0.000025] Switching to timer-based delay loop, resolution 52ns [ 0.000278] Console: colour dummy device 80x30 [ 0.000308] Calibrating delay loop (skipped), value calculated using timer frequency.. 38.40 BogoMIPS (lpj=192000) [ 0.000328] pid_max: default: 32768 minimum: 301 [ 0.000626] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.000641] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.001565] Disabling cpuset control group subsystem [ 0.001596] Initializing cgroup subsys io [ 0.001625] Initializing cgroup subsys memory [ 0.001662] Initializing cgroup subsys devices [ 0.001680] Initializing cgroup subsys freezer [ 0.001699] Initializing cgroup subsys net_cls [ 0.001742] CPU: Testing write buffer coherency: ok [ 0.001803] ftrace: allocating 23123 entries in 68 pages [ 0.057457] CPU0: update cpu_capacity 1024 [ 0.057488] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 [ 0.057501] [bcm2709_smp_prepare_cpus] enter [ 0.057638] Setting up static identity map for 0x8240 - 0x8274 [ 0.059268] [bcm2709_boot_secondary] cpu:1 started (0) 18 [ 0.059505] [bcm2709_secondary_init] enter cpu:1 [ 0.059549] CPU1: update cp[ 3.254223] usb 1-1.4: new full-speed USB device number 5 using dwc_otg [ 3.365909] usb 1-1.4: New USB device found, idVendor=248a, idProduct=8566 [ 3.365928] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 3.365944] usb 1-1.4: Product: Wireless Receiver [ 3.365959] usb 1-1.4: Manufacturer: Telink [ 3.374651] input: Telink Wireless Receiver as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/0003:248A:8566.0001/input/input0 [ 3.435145] hid-generic 0003:248A:8566.0001: input,hidraw0: USB HID v1.11 Keyboard [Telink Wireless Receiver] on usb-3f980000.usb-1.4/input0 [ 3.444454] input: Telink Wireless Receiver as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.1/0003:248A:8566.0002/input/input1 [ 3.504669] hid-generic 0003:248A:8566.0002: input,hidraw1: USB HID v1.11 Mouse [Telink Wireless Receiver] on usb-3f980000.usb-1.4/input1 [ 3.584236] usb 1-1.5: new low-speed USB device number 6 using dwc_otg [ 3.713088] usb 1-1.5: New USB device found, idVendor=03f0, idProduct=0324 [ 3.713126] usb 1-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 3.713141] usb 1-1.5: Product: HP Basic USB Keyboard [ 3.713157] usb 1-1.5: Manufacturer: Lite-On Technology Corp. [ 3.728780] input: Lite-On Technology Corp. HP Basic USB Keyboard as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.0/0003:03F0:0324.0003/input/input2 [ 3.784935] hid-generic 0003:03F0:0324.0003: input,hidraw2: USB HID v1.10 Keyboard [Lite-On Technology Corp. HP Basic USB Keyboard] on usb-3f980000.usb-1.5/input0 [ 3.884515] random: nonblocking pool is initialized [ 5.978086] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x45E1 [ 6.004220] Sending DHCP requests ., OK [ 6.084216] IP-Config: Got DHCP answer from 192.168.2.1, my address is 192.168.2.58 [ 6.084425] IP-Config: Complete: [ 6.084444] device=eth0, hwaddr=b8:27:eb:d2:2e:fd, ipaddr=192.168.2.58, mask=255.255.255.0, gw=192.168.2.1 [ 6.084457] host=192.168.2.58, domain=, nis-domain=(none) [ 6.084470] bootserver=192.168.2.1, rootserver=192.168.2.100, rootpath= [ 6.084481] nameserver0=192.168.2.1 [ 6.172885] VFS: Mounted root (nfs filesystem) readonly on device 0:16. [ 6.173465] devtmpfs: mounted [ 6.174318] Freeing unused kernel memory: 488K (80944000 - 809be000) INIT: version 2.88 booting Starting udev udev: Not using udev cache because of changes detected in the following files: udev: /proc/version /proc/cmdline /proc/devices udev: lib/udev/rules.d/* etc/udev/rules.d/* udev: The udev cache will be regenerated. To identify the detected changes, udev: compare the cached sysconf at /etc/udev/cache.data udev: against the current sysconf at /dev/shm/udev.cache [ 7.659066] udevd[138]: starting version 3.1.5 [ 8.043498] gpiomem-bcm2835 3f200000.gpiomem: Initialised: Registers at 0x3f200000 [ 8.059734] bcm2835-wdt 3f100000.watchdog: Broadcom BCM2835 watchdog timer [ 8.281759] usbcore: registered new interface driver brcmfmac [ 8.446359] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Dec 15 2015 18:10:45 version 7.45.41.23 (r606571) FWID 01-cc4eda9c [ 8.467391] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code [ 8.664053] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code [ 8.664125] cfg80211: World regulatory domain updated: [ 8.664141] cfg80211: DFS Master region: unset [ 8.664151] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time) [ 8.664172] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A) [ 8.664255] cfg80211: (2457000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A) [ 8.664272] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm), (N/A) [ 8.664289] cfg80211: (5170000 KHz - 5250000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (N/A) [ 8.664306] cfg80211: (5250000 KHz - 5330000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (0 s) [ 8.664323] cfg80211: (5490000 KHz - 5730000 KHz @ 160000 KHz), (N/A, 2000 mBm), (0 s) [ 8.664339] cfg80211: (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A) [ 8.664355] cfg80211: (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm), (N/A) Populating dev cache Wed Sep 7 09:00:52 UTC 2016 INIT: Entering runlevel: 5 Configuring network interfaces... ifup skipped for nfsroot interface eth0 run-parts: /etc/network/if-pre-up.d/nfsroot: exit status 1 Starting system message bus: dbus. Starting OpenBSD Secure Shell server: sshd done. Starting rpcbind daemon...[ 11.333302] NET: Registered protocol family 10 done. starting statd: done


相關推薦

樹莓3除錯串列問題的完美解決:除錯共存

問題 因為RaspberryPi3的BT與Debug串列埠共用,導致同一時間只能有一個可以使用,儘管也可以使用軟的UART1來控制BT,但是這樣子的話需要將CPU的頻率固定.  而我們在實際開發中,在mount rootfs之前. 是需要用debug串列埠來檢視kernel

淺嘗樹莓3串列配置

引言 本文轉載自:  http://etrd.org/2017/01/29/%E6%A0%91%E8%8E%93%E6%B4%BE3%E7%A1%AC%E4%BB%B6%E4%B8%B2%E5%8F%A3%E7%9A%84%E4%BD%BF%E7%94%A8%E5%8F%8A%E7%BC%96%E7%A8

Pixhawk樹莓3串列通訊

新建主題 msg資料夾下新建mytopic.msg檔案 char[4] datastr0 //字串的寫法 存放傳送過來的字串 uint8 data//將字串轉換成整型 在msg資料夾中的cmkaelist檔案中加入 新

樹莓3命令列配置wifi無線連線和連線

樹莓派(raspberry pi)在3月份更新了,新的樹莓派3內建wifi和藍芽,再也不用usb介面卡了,到手後第一步當然是測試藍芽和wifi,不然買到2冒充的就傻眼了,本文介紹在命令列裡啟用wifi連線和藍芽連線。 個人原創,版權所有,轉載請註明原文出處,並保留原文

樹莓3B的串列設定簡單除錯

小派買回來很久都沒用,突然接到一個要在一個linux環境下做命令翻譯器的工作。所以想拿小派來客串一下,但是不走運的我百度了很多樹莓派3B串列埠設定的方法試了很久才試通,所以覺得有必要整理一下。因為本人是小白,所以我覺得小白都可以看懂,嘻嘻。 那麼首先,我轉載一個很有用的東西

樹莓ASCII指令串列通訊(十六進位制傳送)

對於指令文字 ENQ STX 08 PS 0500 F0 ETX的ASCII傳送 首先按照我上一篇部落格開啟串列埠 >>ser.write("\x05\x02\x30\x38\x50\x53\x20\x20\x30\x35\x30\x30\x46\x30\x0

RaspberryPi2樹莓USB轉串列連線Arduino

PI通過USB轉串列埠連線Arduino 我用樹莓派2連線Arduino,然後通過Arduino控制繼電器和其他裝置。 樹莓派連線Arduino大致有幾種方法: TTL串列埠直接連線,有人說需要轉電平,我沒有試。 I2C或SPI連線,我沒有試。 USB轉

樹莓-wiringPi-UART串列

前面介紹了python操作串列埠的方法,是通過通用的串列埠庫實現的。 用c語言當然也可以通過通用串列埠介面實現,而wiringPi也提供了自己的一套串列埠操作函式,可以很方便地操作串列埠。 事實上,wiringPi就是在上層利用通用串列埠操作介面,封裝了一套自己的庫

樹莓3b TTL串列登入補充

樹莓派3b 的主控晶片內部,將串列埠分配改了晶片內部整合的藍芽,所以導致串列埠不能使用(Putty連線後會一直保持黑屏)。為了能夠使用 TTL 串列埠登入樹莓派,需要修改根資料夾下 boot 裡的 config.txt 檔案。輸入命令:[email protecte

樹莓wiringPi庫串列詳解

串列埠通訊使用時需要包含標頭檔案:#include <wiringSerial.h>int serialOpen (char *device, int baud)device:串列埠的地址,在Linux中就是裝置所在的目錄。預設一般是"/dev/ttyAMA0",

2018最新最詳細 樹莓3B+ QT5 串列收發配置使用者程式開機自啟方法圖文教程

2018.9.6 由於實驗室專案需要處理資料並用串列埠進行傳送,最後還要開機自啟,專門鼓搗了一番。由於網上的方案隨著樹莓派本身版本變化而不適應,因此除錯過程中也實在耗費了不少功夫。最有價值的除錯方案還是官方的英文教程:Raspberry Pi 3 UART Boot Ove

樹莓使用uart串列串列裝置通訊

樹莓派硬體版本: 二代B+ 樹莓派系統版本 1 2 3 4 5 6 [email protected]@raspberrypi:~# lsb_release -a No LSB modules are available. Distributor

樹莓+python+列印串列資料

python上手沒兩天,寫一個正常的列印串列埠的程式耗費了我半天的時間,網上有很多關於樹莓串列埠python小程式,多數是在串列埠助手這樣的終端回顯,而我想要樹莓派時時打印出串列埠接收到的資料。在網上找了許多的文章,不盡人意。遇到了各種小問題。 第一個就是python pr

樹莓---wiringPi串列使用(win10+樹莓3+usb轉串列

參考 準備 在樹莓派上用Qt寫串列埠傳送資料的程式 serialTEST.pro QT += core QT -= gui TARGET = test CONFIG +=

樹莓3 Model B實現串列撥打電話

首先,由於樹莓派3 Model B的TTL引腳GPIO14、GPIO15預設被分配給了藍芽,所以為了能用這兩個引腳接GSM模組,必須把藍芽禁用掉,然後把GPIO14、GPIO15分配給串列埠。具體實現參考:http://blog.csdn.net/aguangg_6655_

樹莓3串列(UART)使用問題的解決方法!

根據官方的反饋和回覆,我們瞭解到樹莓派3上使用者目前無法正常是使用GPIO中的UART串列埠(GPIO14&GPIO15),也就是說使用者無論是想用串列埠來除錯樹莓派,還是想用GPIO中的串列埠來連線GPS,藍芽,XBEE等等串列埠外設目前都是有問題的。 原因是樹

樹莓3 串列使用 raspberry pi 3B+ uart boot overlay(最全樹莓串列使用)

         今天要說說樹莓派3的UART串列埠的使用問題,該串列埠問題的官方反饋及回覆請參考這兩篇官方博文http://www.briandorey.com/post/Raspberry-Pi-3-UART-Boot-Overlay-Part-Two        

Mac 利用usb轉串列連線樹莓3及配置wifi

環境:Mac工具:樹莓派,usb轉串列埠,3根杜邦線預設:樹莓派SD卡系統安裝好,沒安裝好可參考網上教程。推薦官網步驟一:安裝驅動   Mac安裝CH340驅動(根據自己的USB轉串列埠晶片下載對應驅動,網上大多教程說安裝PL2303,但淘寶上大多數賣的是CH340)。點選下

樹莓3串列(UART)使用問題(板載串列)!!

根據官方的反饋和回覆,我們瞭解到樹莓派3上使用者目前無法正常是使用GPIO中的UART串列埠(GPIO14&GPIO15),也就是說使用者無論是想用串列埠來除錯樹莓派,還是想用GPIO中的串列埠來連線GPS,藍芽,XBEE等等串列埠外設目前都是有問題的。 原因是樹莓派CPU內部有兩個串列埠,一個

樹莓除錯串列作為普通串列使用

修改cmdline.txt 將所有ttyAMA0相關配置刪除 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfst