通過文件,因為我單獨安裝過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...