1. 程式人生 > >64位 Fedora 22環境下搭載 mini2440 開發環境

64位 Fedora 22環境下搭載 mini2440 開發環境

近來對嵌入式Linux開發很感興趣,於是淘了塊“友善之臂”的mini2440開發板玩兒。首先搭載開發環境,由於光碟中視訊用的Fedora14太老,很多yum源都以失效,難以獲取和更新軟體,索性下了個最新的Fedora22,自己配置開發環境。廢話不多說,言歸正文。

本文目標:
1.在vmware虛擬機器上安裝Fedora22;
2.配置Samba服務,以便Windows訪問虛擬機器資源;
3.安裝arm-linux-gcc交叉編譯環境;
4.使用secureCRT將交叉編譯好的程式傳送到mini2440上執行測試。

1.vmware10上安裝fedora22虛擬機器

開啟vmware,點選“檔案”選單下的 “新建虛擬機器” 
-> 選擇“典型” ,下一步
-> 選擇“安裝光碟映象檔案(iso)”,點選“瀏覽”,選擇我們的Fedora22安裝光碟映象,下一步
-> 選擇"Linux", 選擇"Fedora 64位",下一步 
-> 隨意設定虛擬機器名稱及存放位置,下一步 
->  自己設定磁碟大小,選擇“將虛擬磁碟拆分成多個檔案”,下一步
-> 點選“自定義硬體”,將“網路介面卡”設定為橋接模式(這樣之後才能和mini2440同在一個網段下,使用nfs服務共享資源)
-> 點選“完成”
-> 點選“開啟此虛擬機器”,開始安裝Fedora22
-> 選擇“Install to hard drive”
-> 選擇安裝語言,下一步
-> 點選“安裝目標位置”,點選“完成”,點選“開始安裝”,安裝期間可以設定root密碼和新增使用者
等待安裝完成即可。(隨vmware版本和Fedora版本的不同,安裝步驟可能會有所差異。)

2.配置samba服務

(此部分參考博文:
http://blog.csdn.net/joeblackzqq/article/details/39087455)

(1)首先關閉防火牆及selinux:

首先root, 輸入 su 命令後會提示輸入密碼

關閉防火牆      //不關的後果是windows看不到本機
systemctl stop firewalld        //暫時關閉防火牆
systemctl disable firewalld     //開機禁止啟動

關閉selinux    //不關的後果是windows沒有許可權訪問本機
編輯 /etc/selinux/config,永久禁用selinux:
vi /etc/selinux/config
將其修改如下:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
#SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
儲存退出後重啟fedora

(2)安裝samba

fedora22已經棄用yum而改用dnf來線上獲取安裝、升級程式了。
基本上好像用起來沒什麼區別,只是把yum替換成dnf即可。

dnf install samba
(低版本fedora可以用 yum install samba)

(3)配置samba
 vi /etc/samba/smb.conf
 在檔案最後新增以下內容,其中[hg]是windows上看到的名稱,path是需要共享的目錄
[hg]
    comment = directory of user "hg"
    path = /home/hg
    public = yes
    writable = yes
    valid users = hg
    create mask = 0700
    directory mask = 0700
    browseable = yes
(4)增加使用者
# smbpasswd -a USER
USER為linux上的使用者名稱

(5)啟動samba服務
    service smb start    //重啟後samba服務失效
    systemctl enable smb //重啟後會自動啟動samba服務

(6)在windows上訪問hg資料夾
    首先在fedora下用ifconfig命令查詢ip地址,如192.168.2.102
    接著在windows資源管理器位址列輸入: \\192.168.2.102
    接著會提示輸入使用者名稱和密碼,按照之前smbpasswd -a新增的使用者輸入登入即可看到hg資料夾。
    這樣便可以在windows下用notepad++編輯完程式碼後,再到linux下去編譯,也可以很方便的將一些資源直接複製到linux資料夾中。

    需要注意的是,若是在fedora下建立的檔案或資料夾,windows下是沒有許可權修改的,表現為無法在資料夾裡新建檔案,或者修改linux下建立的檔案後無法儲存。
    需要將相應的檔案加上“其他使用者(o)”的“寫許可權(w)” chmod o+w /home/hg/test 後,便可正常新建、修改檔案了。

3.安裝交叉編譯工具

安裝arm-linux-gcc前,還是先安裝個gcc,編譯個hello.c吧,總感覺不列印個hello world出來,缺了些什麼一樣。

fedora22沒有預裝gcc,安裝也非常簡單:

dnf install gcc

用vi新建個c檔案:vi hello.c
#include <stdio.h>

int main()
{
    printf("Hello world!\n");
}
編譯:gcc hello.c -o hello
執行:./hello
輸出結果:Hello world!

Hello world!

看到了Hello world,志得意滿,我們繼續來安裝arm-linux-gcc

1.將 arm-linux-gcc-4.3.2.tgz 和 install_32lib.sh 拷貝到之前samba共享的目錄中
2.解壓arm-linux-gcc-4.3.2.tgz
tar xzvf arm-linux-gcc-4.3.2.tgz -C /
3.新增環境變數
修改/etc/profile: vi /etc/profile
增加:pathmunge /usr/local/arm/4.3.2/bin

/etc/profile

執行: source /etc/profile
鍵入 “arm-linux-” 之後按兩下 Tab 鍵,若出現以下很多指令,說明環境變數配置正確。

環境變數配置正確

但由於我安裝的是64位系統,還需要安裝32位的庫,否則會報錯:
輸入 arm-linux-gcc -v 提示有些庫找不到

arm-linux-gcc 報錯

有很多庫需要安裝,方便起見,可以直接執行install_32lib.sh:
chmod u+x install_32lib.sh
./install_32lib.sh

安裝完之後再輸入 arm-linux-gcc -v,成功

arm-linux-gcc安裝成功
此時再用arm-linux-gcc編譯一下之前的hello.c:
arm-linux-gcc hello.c -o hello_mini2440

這裡寫圖片描述
4.使用secureCRT將交叉編譯好的程式傳送到mini2440上執行測試

1)安裝secureCRT,安裝完後,將mini2440通過串列埠連結至電腦,開啟secureCRT,設定並連線:

secureCRT連線串列埠

2)mini2440上開關選擇nand flash啟動,開啟mini2440電源,便可以通過secureCRT連線到mini2440的shell了:

mini2440 shell

3)將之前在fedora上編譯的hello_mini2440拷貝到windows中,在mini2440的shell上執行 rz 指令,將hello_mini2440下載到目標板中並執行:

下載執行hello_mini2440