armV8 下除錯232 485小結,

2021-09-29 23:27:12 字數 3369 閱讀 1271

通過文件,因為我單獨安裝過dxx的驅動,不確定是kernal整合 還是我之前安裝的可行,上述步驟可以不用一步步做,

我直接  1,dmesg | grep ftdi  發現, 最後那句, ttyusb0 已經attached,故 沒有按照上面編寫那個檔案 99-usbftdi.rules

,(而我後面 發現只有sudo下root許可權才能操作serial,也更改了/etc/udev/,可以增加udev規則來實現,具體方法如下:sudo vim /etc/udev/rules.d/70-ttyusb.rules增加如下內容:kernel=="ttyusb[0-9]*",mode="0666"儲存,重新插入usb轉串列埠,普通使用者就能搞定了,  不知道 這個 99 和70 rules作用是啥,個人感覺因為linux下一切皆檔案,這個是對usb的設定檔案,寫入keral許可權)

2,很重要的一點,sudo apt-get remove brltty, ubuntu下必remove這個才可以使用。

3,插入 串列埠裝置,如果你輸入 cd /dev, ls 看到 ttyusb0 或者ttyusb1,等表示 已經識別到了這個裝置,說明驅動正常。否則需要重新安裝驅動,參考 vcp drives 和 d2xx drivers。(疑問: 出現過兩次,插拔同乙個硬體,只有乙個這個com的情況下,發現一會ttyusb0,一會ttyusb1?原因待查),其中我走了個彎路,按照 別人給我的驅動找到了armv8下的 d2xx 驅動,libftd2xx-arm-v8-1.4.8.gz,解壓 tar xfvz  libftd2xx-arm-v8-1.4.8.tgz(gunzip  libftd2xx-arm-v8-1.4.8.gz ,tar -vxf libftd2xx-arm-v8-1.4.8.tar  tar -vxf   -vxf libftd2xx-arm-v8-1.4.8),按照要求,1,cd  build  sudo -s  su 後  ,2,cp libftd2xx.* /usr/local/lib  ,3,  chmod 0755 /usr/local/lib/libftd2xx.so.1.4.8, ,4,  ln -sf /usr/local/lib/libftd2xx.so.1.,4.8 /usr/local/lib/libftd2xx.so 安裝驅動完畢。 然後 cd exsamples下後make -b , cd 到eeprom下發現 ft_open failed, 看文件意識是讓我們open之前先去ft_setvidpid

,後面我執行這個setvidpid 發現一樣不行,所以應該是用vcp,而不用d2xx。

4,為了防止走彎路,先用su許可權執行程式 看看python下是否成功,方法:

sudo apt-get remove python-serial

sudo apt-get install python-pip

sudo pip install pyserial

# -*- coding:utf-8 -*-

# author: wujiang

# 執行環境為ubuntu18.04&python2.7

import serial

import time

ser = serial.serial("/dev/ttyusb0", 9600) # 選擇串列埠,並設定波特率

if ser.is_open:

print("port open success")

# hex(16進製制)轉換為bytes(2進製),應注意python2.7與python3.7此處轉換的不同

send_data = 'ff010055000056'

send_data = send_data.decode('hex')    # 傳送資料轉換為b'\xff\x01\x00u\x00\x00v'

ser.write(send_data)   # 傳送命令

time.sleep(0.1)        # 延時,否則len_return_data將返回0,此處易忽視!!!

len_return_data = ser.inwaiting()  # 獲取緩衝資料(接收資料)長度

if len_return_data:

return_data = ser.read(len_return_data)  # 讀取緩衝資料

# bytes(2進製)轉換為hex(16進製制),應注意python2.7與python3.7此處轉換的不同,並轉為字串後擷取所需資料字段,再轉為10進製

str_return_data = str(return_data.encode('hex'))

feedback_data = int(str_return_data[-6:-2], 16)

print(feedback_data)

else:

print("port open failed")

###執行環境為ubuntu18.04&python3.6

import serial

import time

ser = serial.serial("/dev/ttyusb1", 9600) # 選擇串列埠,並設定波特率

if ser.is_open:

print("port open success")

# hex(16進製制)轉換為bytes(2進製),應注意python2.7與python3.7此處轉換的不同

send_data = 'ff010055000056'

send_data = bytes.fromhex(send_data)    # 傳送資料轉換為b'\xff\x01\x00u\x00\x00v'

print(send_data)

ser.write(send_data)   # 傳送命令

time.sleep(0.9)        # 延時,否則len_return_data將返回0,此處易忽視!!!

len_return_data = ser.inwaiting()  # 獲取緩衝資料(接收資料)長度

if len_return_data:

return_data = ser.read(len_return_data)  # 讀取緩衝資料

# bytes(2進製)轉換為hex(16進製制),應注意python2.7與python3.7此處轉換的不同,並轉為字串後擷取所需資料字段,再轉為10進製

str_return_data = str(return_data.hex())

feedback_data = int(str_return_data[-6:-2], 16)

print(feedback_data)

else:

print("port open failed")

返回值正常。

5,因為我是虛擬環境 新的使用者,所以更改了許可權,另外在新使用者下安裝了:

pip install pyftdi

pip install serial

ARMv7與ARMv8的區別

參考連線 區別 1.指令集 armv8使用64位及32位的指令集,armv7使用32位及16位的指令集。2.通用暫存器 v8包含32個暫存器其中前32個位64位暫存器,後32個位32位暫存器,v7只包含16個32位暫存器。3.simd暫存器 v8包含32個128位暫存器,v7是32個64位暫存器。目...

ARM V8框架結構下的開發平台

juno arm開發平台 adp 是一款 armv8 a 軟體開發平台,它包括 juno versatile express 開發板和乙個從 linaro 獲得的 armv8 a 參考軟體埠,juno 軟硬體平台提供給開發者和廠商一樣的資源 cortex a57 和 a53 多核 armv8 big...

ARMv8 中斷處理介面

不考慮el2和el3,irq處理分兩種情況 使用者態發生的中斷和核心態發生的中斷,相應的中斷處理介面分別為 el1 irq el0 irq 以核心態el1發生的irq為例 358 align 6 359 el1 irq 360 kernel entry 1 壓棧,儲存上下文 361 enable d...