linux開發版開發
⑴ 嵌入式 linux 開發主要是做什麼的
人工智慧 物聯網的產業落地,都脫不開嵌入式。現在企業最需要的更多的是創新型,復合型,應用型人才,搭載配套開發板學習嵌入式 linux 開發,可以為以後找到高薪工作鋪好路。
搭載配套開發板學習嵌入式 linux,出了可以學習arm、linux、Qt外,還可以學習stm32單片機、FreeRTOS、物聯網、人工智慧、網路 阿里 華為等各種雲接入,stm32mp157強大的硬體性能及豐富的配套模塊極大拓展Linux的應用場景,非常貼合企業當下開發需求。現在整個時代背景是多技術的融合發展時代,是AIoT的時代,相關技術的拓展會給職業發展帶來很多機遇。
技術學習最重要的就是實戰,買塊開發板開練很重要,FS-MP1A開發板,主控晶元是用的stm32mp157。可以學嵌入式Linux,也可以學stm32,還可以學物聯網,人工智慧,屬於體系化教學級開發板。
⑵ 如何自製一個Linux開發板經費要維持在40以下最好
arm linux開發是一個很籠統的說法,具體的開發取決於你的目標是什麼。
比如我要做個機器人
我買了一塊開發板,cpu是ARM的
然後我為這塊開發板自製了一個Linux系統。首先我需要為開發板的硬體編寫驅動,然後把驅動和Linux內核代碼一起編譯,然後就得到了包含驅動的內核映像。然後我再製作文件系統,把製作好的系統放到SD卡上面。這樣Linux系統就完成了,系統啟動後開發板硬體都可以使用。這是系統層面的開發。
接下來我要實現機器人視覺。把雙攝像頭捕捉的圖像捕獲,再進行處理。於是我編寫一個程序,使用了openCV庫,這個程序可以判斷機器人和障礙物的距離。這是用戶層面的開發。
⑶ linux 開發板
如果資金充足就可以花600多買一個的,可以買到6410的,或者6440的。如果沒錢就買個二手的,或者2410的。你主要是學習編寫驅動,這個東西無所謂過時不過時。相反時間老的晶元資料多,自己學習過程中出了問題也容易找到資料。驅動都是有構架的,只有弄清楚各類驅動構架和各類匯流排協議就可以了。同樣的內核和驅動,移植到2410和6410上面,修改的東西不多的。。。
求採納為滿意回答。
⑷ 如何搭建一台Linux開發伺服器
在開發過程中,必然會出現多人同時工作、協著的情況,在嵌入式開發項目中更為平常,這樣可以加快項目周期,為產品上市佔得時間先機。目前,使用Linux作為開發產品的操作系統情況越來越多,使用越來越廣泛。為了交叉編譯,為了最接近開發目標,我們一般都會自己搭建一台Linux開發伺服器。Linux開發伺服器一些常用的功能必須支持,比如Samba、nfs、tftp、httpd等。 首先我們需要選擇合適的Linux操作系統作為伺服器的系統,推薦使用Fedora8、Fedora10等,筆者在長期使用的過程中覺得比較穩定吧!如何安裝該操作系統就不多說了。 裝好系統後,需要增加Linux OS用戶,可以使用命令#adser XXX;增加XXX用戶,#passwd XXX給其設置登錄密碼。當然使用圖形化創建用戶也很直觀、方便。在這個環節值得注意的一定要設置好該用戶的home目錄,一般都會設置到該用戶的工作目錄,各個用戶的工作目錄需要私有化、獨立開來,這樣方便些、安全些。 多用戶的賬戶有了,我們應該來打通網路功能了,Fedora有bug,在圖形化配置GATEWAY什麼的會不成功,請安裝如下方法修改: # cd cd /etc/sysconfig/network-scripts/ # vi ifcfg-eth0 修改配置文件如下: # Marvell Technology Group Ltd. 88E8001 Gigabit Ethernet Controller DEVICE=eth0 HWADDR=00:16:e6:db:c2:96 ONBOOT=yes BOOTPROTO=static //這個應該是「static」,而不是「dhcp」或「none」; USERCTL=yes PEERDNS=yes IPV6INIT=no NM_CONTROLLED=yes//這個應該是「yes」,如不修改,鏈接仍是disconnected; TYPE=Ethernet NETMASK=***.***.***.*** IPADDR=***.***.***.*** DNS1=***.***.***.*** DNS2=***.***.***.*** GATEWAY=***.***.***.*** step 3: # service network restart 接下來就需要調試一下Samba功能了,這樣在windows下編輯Linux下的代碼將非常的便利。命令行下操作方法如下: Vim /etc/samba/smbusers # Unix_name = SMB_name1 SMB_name2 … root = administrator admin nobody = guest pcguest smbguest dssun = dssun hmchen = hmchen 增加Samba用戶; Vim /etc/samba/smb.conf [dssun] comment = * path = /opt/STM/STLinux-2.3/devkit/dtvkit/dssun writeable = yes ; browseable = yes valid users = bluo, dssun, hmchen, hqian, sbxiang, tsfu, yrli 設置工作路徑,可讀寫性、有效訪問的用戶等。 在圖形化下也有配置菜單,這個就很簡單了,不再敘述。 有了Samba就方便很多了!編譯編輯都很不錯了!接下來要著手你的開發平台軟體,這個對於不同平台的SDK有不同的處理方法,根據自己的SDK來處理。 有了SDK後,我們編譯通過後,一般都會進行調試,如何方便的調試呢?一般都會想到使用nfs調試。 以Fedora為例,一般默認安裝的沒有包括tftp功能,可以使用yum來安裝,方便! #yum install tftp; #yum install tftp-server 還需要更改一下tftp的配置,如下: vim /etc/xinetd.d/tftp 修改server_args = -s /tftpboot -c,這里的-c一定要加上,否則只能下載不能上傳!!! service tftp { disable = no socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot -c per_source = 11 cps = 100 2 flags = IPv4 } # mkdir /tftpboot # chmod 777 -R /tftpboot/ # service xinetd restart 記得要關閉防火牆、seLinux.不disabled seLinux,Samba有可能只能讀不能寫,切記。
⑸ 正點原子linux開發板怎麼調試
ui
正點原子Linux開發板——Qt串口上位機實驗
門牙會稍息
原創
關注
3點贊·53人閱讀
前言:
最近在學習嵌入式qt開發,然後跟著教程編寫了一個簡單的串口上位機程序,在編寫的時候還算比較順利,但在調試的時候花了點功夫,折騰了一下午。最後還是理清了思路,解決了問題,特寫此博客進肆灶斗行記錄和總結。
串口上位機界面設計:
整個軟體的界面我都是用ui來設計的,其實也可以用代碼,但是想了想有好多布局相互嵌套比較麻煩。最後就使用了ui界面來設計。
ui界面設計
串口上位機程序功能設計:
然後像串口對象初始化,槽函數裂磨,一些邏輯關系都用代碼來實現,頭文件就只有一些變數、槽的定義。
頭文件
#include "widget.h"
#include "ui_widget.h"
#include <QMessageBox>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//lcd屏的解析度是1024X600
this->setFixedSize(QSize(1024, 600));
//new 一個QSerialPort對象
serialPort = new QSerialPort(this);
//通過foreach語句將windows或imx6ull可用串口識別出來,並添加至對應的下拉選擇框
QStringList serialList;
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts()){
serialList += info.portName();
}
ui->comboBox->addItems(serialList);
//設置串口的信號與槽
connect(serialPort, SIGNAL(readyRead()), this, SLOT(readData()));
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_radioButton_clicked(bool checked)
{
//點擊「打卡串口」button之後的一些串口配置操作,和一些邏輯關系
if(checked){
//設置串口端
serialPort->setPortName(ui->comboBox->currentText());
//設置波特率
serialPort->setBaudRate(ui->comboBox_2->currentText().toInt());
//設置停止位
serialPort->辯喊setStopBits(QSerialPort::StopBits(ui->comboBox_4->currentText().toInt()));
//設置數據位
serialPort->setDataBits(QSerialPort::DataBits(ui->comboBox_6->currentText().toInt()));
//設置校驗位
switch(ui->comboBox_5->currentIndex()){
case 0:
serialPort->setParity(QSerialPort::Parity::NoParity);
break;
case 1:
serialPort->setParity(QSerialPort::Parity::EvenParity);
break;
case 2:
serialPort->setParity(QSerialPort::Parity::OddParity);
break;
case 3:
serialPort->setParity(QSerialPort::Parity::SpaceParity);
break;
case 4:
serialPort->setParity(QSerialPort::Parity::MarkParity);
break;
default:
break;
}
serialPort->setFlowControl(QSerialPort::NoFlowControl);
if(!serialPort->open(QSerialPort::ReadWrite)){
QMessageBox::about(this, "串口打開錯誤提示", "可能被佔用了");
return;
}
//打開串口之後其他的選擇按鈕設置成不可用
ui->comboBox->setEnabled(false);
ui->comboBox_2->setEnabled(false);
ui->comboBox_4->setEnabled(false);
ui->comboBox_5->setEnabled(false);
ui->comboBox_6->setEnabled(false);
ui->radioButton->setText("關閉串口");
}
else{
serialPort->close();
ui->comboBox->setEnabled(true);
ui->comboBox_2->setEnabled(true);
ui->comboBox_4->setEnabled(true);
ui->comboBox_5->setEnabled(true);
ui->comboBox_6->setEnabled(true);
ui->radioButton->setText("打開串口");
}
}
void Widget::readData()
{
//將串口中的數據列印到textBrowser中
ui->textBrowser->insertPlainText(serialPort->readAll());
}
void Widget::on_pushButton_clicked()
{
//點擊「發送」button之後,將textEdit中的內容寫入串口
serialPort->write(ui->textEdit->toPlainText().toUtf8());
}
void Widget::on_pushButton_2_clicked()
{
//清屏操作
ui->textEdit->clear();
ui->textBrowser->clear();
}
登錄後復制
在windows端編寫好程序之後,將工程文件發送到ubuntu進行qmake、make最後通過scp將ARM的可執行文件發送到開發板,接下來就是驗證了
我用的是正點原子出廠的系統,所以在驗證的時候需要使用到一個串口來連接到開發板執行編寫好的上位機程序,所以一個串口就被佔用了,正點原子教程視頻就用開發板的另一個串口來進行測試
正點原子教程測試方式
因為放假回了家,我也沒有帶太多的東西,usb轉ttl模塊放在了學校。所以我在想怎麼就用一個串口來完成實驗。困擾我的就是唯一的一個串口必須留個上位機,然後要怎麼執行開發板上的串口上位機程序?最初我想到了可以使用網路通過Xshell遠程連接到開發板就可以執行,唯一的串口就拿來驗證。
解決完上位機軟體怎麼在imx6ull上執行的問題,接下來就是驗證了。驗證的時候又出現了一些問題,上位機軟體不像想像的那樣一邊發數據,一邊就接收對應的數據,而出現了一些imx6ull的信息,好像還可以輸入命令,感到非常奇怪。
我以為我的軟體有問題,就在windows上換了一個串口軟體,結果還是出現了類似的情況
最後也是在不斷猜想和測試之後找到了原因,就是應因為我在給開發板上電的時候接入了串口線,然後先打開了windows上的串口,然後就使用到了串口,導致就相當於有一個串口控制imx6ull開發板,像Xshell中通過串口連接開發板一樣。然後我嘗試在windows的上位機軟體輸入命令想打開一個qt程序,最後也是成功打開證實了猜想
執行./list命令打開了蛇姐list程序(qt程序的路徑是/home/root/qt_project/list)
如果想要實現實驗最初windows和imx6ull兩個上位機互換數據的效果的話。要先通過windows中的上位機軟體輸入命令來打開imx6ull的上位機軟體,這樣相當於windows中的上位機連接的就是imx6ull的上位機了,而不是直接控制imx6ull了,之後就可以正常收發數據了。
總結:
學了qt快半個月了,這個串口上位機算是一個比較綜合的練習了,結合了ui和代碼設計。加上最後的調試也是收獲頗多,如果有usb-ttl模塊的話驗證步驟就會更簡單。
⑹ 驅動開發必須使用開發板廠家提供的Linux源碼嗎
驅動開發環境
要進行linux驅動開發我們首先要有linux內核的源碼樹,並且這個linux內核的源碼樹要和開發板中的內核源碼樹要一直;
比如說我們開發板中用的是linux kernel內核版本為2.6.35.7,在我們ubuntu虛擬機上必須要有同樣版本的源碼樹,
我們再編譯好驅動的的時候,使用modinfo XXX命令會列印出一個版本號,這個版本號是與使用的源碼樹版本有關,如果開發板中源碼樹中版本與
modinfo的版本信息不一致使無法安裝驅動的;
我們開發板必須設置好nfs掛載;這些在根文件系統一章有詳細的介紹;