精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

(exynos4412)Tiny4412裸機(jī)開發(fā)-點(diǎn)亮LED

DS小龍哥-嵌入式技術(shù) ? 來源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2022-08-12 09:18 ? 次閱讀

1. 前言

Tiny4412開發(fā)是友善之臂推出的AndroidLinux學(xué)習(xí)開發(fā)板,CPU采用三星的EXYNOS4412,32位芯片,屬于Cortex-A系列,主頻是1.5GHZ,可以運(yùn)行ubuntu、Android5.0、純Linux等操作系統(tǒng)

這篇文章就介紹利用這款開發(fā)板完成裸機(jī)開發(fā),不涉及操作系統(tǒng),直接當(dāng)做單片機(jī)一樣,完成LED燈、蜂鳴器的編程,了解這款芯片與常規(guī)的Cortex-M系列芯片編程有何區(qū)別。

核心板如圖:

image-20220124143413952

下面是開發(fā)板的實(shí)物圖:

image-20220124143157723

開發(fā)板的配置:

image-20220124143510661

2. 搭建交叉編譯環(huán)境

進(jìn)行裸機(jī)編程之前,需要先搭建交叉編譯環(huán)境,安裝arm-linux-gcc交叉編譯器,交叉編譯后的程序才能在開發(fā)板上運(yùn)行。

什么叫交叉編譯? PC機(jī)編譯、在嵌入式開發(fā)板運(yùn)行這種模式就叫交叉編譯。

交叉編譯器在開發(fā)板的光盤里有提供,直接拷貝到PC機(jī)Linux下解壓,配置環(huán)境變量接口

詳細(xì)操作步驟如下:

1.  在Linux用戶目錄下創(chuàng)建一個(gè)目錄: mkdir work/arm-linux-gcc -p
?
2.  將交叉編譯器拷貝到Linux系統(tǒng)共享目錄。再解壓到arm-linux-gcc目錄下。
tar xvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz -C /home/wbyq/work/arm-linux-gcc/
?
3.  添加系統(tǒng)環(huán)境變量
 (1). root用戶: 需要將代碼寫在/etc/profile文件中
 (2). 普通用戶: 需要將代碼寫在 用戶目錄下的.bash_profile文件中
profile文件系統(tǒng)上電的時(shí)候會自動執(zhí)行。
添加環(huán)境變量的命令:
export PATH=/home/wbyq/work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/bin:$PATH
參數(shù):
export  導(dǎo)出--全局聲明
PATH  系統(tǒng)環(huán)境變量的名稱. 作用: 保存Linux系統(tǒng)可執(zhí)行文件的搜索路徑.
?
輸出環(huán)境變量的值:
[wbyq@wbyq ~]$ echo $PATH
/home/wbyq/work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/bin:/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/wbyq/bin
?
export LD_LIBRARY_PATH=/mnt/hgfs/linux-share-dir/sum:$LD_LIBRARY_PATH
參數(shù):
LD_LIBRARY_PATH 系統(tǒng)環(huán)境變量的名稱. 作用: 保存Linux系統(tǒng)動態(tài)庫的搜索路徑. xxx.so
?
4.  生效環(huán)境變量
(1). 立即生效:  當(dāng)前終端有效
[wbyq@wbyq ~]$ source .bash_profile 
(2). 退出用戶、重新登錄系統(tǒng),實(shí)現(xiàn)永久生效
?
5.  測試交叉編譯器. 學(xué)習(xí)基本用法
?
[wbyq@wbyq linux_2021]$ arm-linux-gcc app.c
[wbyq@wbyq linux_2021]$ ls
a.out  app.c
[wbyq@wbyq linux_2021]$ ./a.out 
bash: ./a.out: cannot execute binary file
[wbyq@wbyq linux_2021]$ gcc app.c -o app1
[wbyq@wbyq linux_2021]$ arm-linux-gcc app.c -o app2
[wbyq@wbyq linux_2021]$ ls
a.out  app1  app2  app.c
[wbyq@wbyq linux_2021]$ file app1 
app1: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
[wbyq@wbyq linux_2021]$ file app2
app2: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.27, not stripped
復(fù)制代碼

3. 點(diǎn)亮LED燈

如果學(xué)習(xí)過單片機(jī)(51,STM32MSP430、AVR之類的)編程,完成當(dāng)前章節(jié)的內(nèi)容應(yīng)該就很容易。

要完成LED燈的控制,需要完成以下幾個(gè)步驟:

1. 查看原理圖
?
2. 配置GPIO口 
?
3. 控制GPIO口輸出電平控制LED
?
4. 編譯程序:
xxx.lds 鏈接文件
設(shè)備: 字符設(shè)備、塊設(shè)備、網(wǎng)絡(luò)設(shè)備
SD卡設(shè)備: /dev/sdb
查看塊大小: cat /sys/block/sdb/size   單位是塊(1塊512字節(jié))
?
5. 燒寫到開發(fā)板測試
dd iflag=dsync oflag=dsync if=./E4412_N.bl1.bin of=/dev/sdb seek=1
參數(shù):
if=./E4412_N.bl1.bin  要寫到SD卡上的文件
of=/dev/sdb  SD卡設(shè)備
seek=1  跳過的塊.  一個(gè)塊==512字節(jié)
?
執(zhí)行燒寫命令:
[wbyq@wbyq sd_fuse]$ sudo ./sd_write.sh /dev/sdb ../main.bin 
復(fù)制代碼

(1)查看原理圖,查找LED的接線位置

tiny4412開發(fā)板是分兩層設(shè)計(jì)的,一個(gè)核心板,一個(gè)底板,LED燈是焊接在核心板上面,原理圖就得打開核心板這份。

image-20220124144707586image-20220124144724303

(2)查看芯片手冊,了解GPIO口如何配置

image-20220124144846728

配置方法也很好理解,在手冊里做了詳細(xì)介紹。LED屬于輸出控制器件,需要將GPIO口配置成輸出模式。

GPIO的模式配置由CON寄存器完成,輸出控制由DAT寄存器完成。

image-20220124144957228

(3)編寫代碼

/* LED的寄存器  GPM4_0 1 2 3*/
#define GPM4CON   (*(volatile unsigned int *)0x110002E0)
#define GPM4DAT   (*(volatile unsigned int *)0x110002E4)
?
int main(void)
{
    /*配置GPIO口模式--配置LED燈*/
    GPM4CON&=0xFFFF0000;
    GPM4CON|=0x00001111;
?
    /*3. 配置GPIO口模式--配置按鍵*/
    GPX3CON&=0xFF0000FF;
?
  GPM4DAT&=~(1<<0);
? ? ?GPM4DAT&=~(1<<1);
?    GPM4DAT&=~(1<<2);
? ? ?GPM4DAT&=~(1<<3);
? ? ?while(1)
? ?  {
? ? ? ? ?
? ?  }
? ? ?return 0;
?}
復(fù)制代碼

(4)Makefile編寫

CC=arm-linux-gcc
main_sp.bin:start.o main.o
    arm-linux-ld -Tmain.lds -o main_sp.elf $^
    arm-linux-objcopy -O binary main_sp.elf main.bin
    arm-linux-objdump -D main_sp.elf > main_sp_elf.dis
%.o : %.S
    $(CC) -o $@ $< -c
?%.o : %.c
?    $(CC) -o $@ $< -c 
?clean:
?    rm *.o *.elf *.bin *.dis ?-f
復(fù)制代碼

(5)代碼燒寫腳本

#
# Copyright (C) 2011 Samsung Electronics Co., Ltd.
#        http://www.samsung.com/
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#modify by zth
#
####################################
?
if [ -z $2 ] #檢查傳入的第三個(gè)參數(shù)長度是否為 0
then
  echo "傳參數(shù)順序: ./腳本.sh    <要燒錄的文件>"
  exit 0
fi
?
if [ -b $1 ]  #檢查第二個(gè)參數(shù)是否是塊設(shè)備
then
  echo "$1 SD卡設(shè)備正常!"
else
  echo "$1 SD卡設(shè)備錯(cuò)誤!"
  exit 0  #退出腳本
fi
?
if [ -e $2 ]  #檢查第三個(gè)參數(shù)(就是要燒錄的文件是否存在)
then
  echo "$2 文件存在."
else
  echo "$2 文件不存在."
  exit 0  #退出腳本
fi
?
?
BDEV_NAME=`basename $1`  #變量賦值--塊設(shè)備名稱
BDEV_SIZE=`cat /sys/block/${BDEV_NAME}/size`
?
if [ ${BDEV_SIZE} -le 0 ]; then
    echo "Error: NO media found in card reader."
    exit 1
fi
?
?
if [ ${BDEV_SIZE} -gt 32000000 ]; then  echo "Error: Block device size (${BDEV_SIZE}) is too large"
    exit 1
fi
?
?
E4412_UBOOT=$2 #將要燒錄文件賦值給變量E4412_UBOOT
MKBL2=./mkbl2 #需要當(dāng)前路徑下有一個(gè)mkbl2文件
?
?
if [ ! -f ${E4412_UBOOT} ]; then #檢測文件是否是普通文件,非目錄和設(shè)備文件
    echo "$2 文件非普通文件!請檢查文件是否正確!"
    exit -1 #退出腳本文件
fi
?
if [ ! -f ${MKBL2} ]; then    #檢測文件是否是普通文件,非目錄和設(shè)備文件
    echo "當(dāng)前目錄下缺少 mkbl2 文件!"
    exit -1 #退出腳本文件
fi
?
${MKBL2} ${E4412_UBOOT} bl2.bin 14336  #14K 通過mkbl2文件燒錄程序 地址是14336
#./mkbl2 main.bin bl2.bin 14336
?
####################################
# fusing images
?
signed_bl1_position=1
bl2_position=17
uboot_position=49
tzsw_position=705
?
#
echo "---------------------------------------"
echo "BL1 fusing"
?
#燒錄命令 ./xx.sh /dev/sdb main.bin
dd iflag=dsync oflag=dsync if=./E4412_N.bl1.bin of=$1 seek=$signed_bl1_position
?
#
echo "---------------------------------------"
echo "BL2 fusing"
#燒錄命令
dd iflag=dsync oflag=dsync if=./bl2.bin of=$1 seek=$bl2_position
?
sync
?
?
#輸出信息
echo "---------------------------------------"
echo "程序燒錄成功!"
echo "請拔出SD卡,放入開發(fā)板運(yùn)行!!"卡設(shè)備>

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • led
    led
    +關(guān)注

    關(guān)注

    242

    文章

    23153

    瀏覽量

    658615
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11232

    瀏覽量

    208949
  • Exynos4412
    +關(guān)注

    關(guān)注

    1

    文章

    8

    瀏覽量

    12707
收藏 人收藏

    評論

    相關(guān)推薦

    (exynos4412)Tiny4412裸機(jī)開發(fā)-按鍵檢測

    上篇文章已經(jīng)介紹過LED裸機(jī)編程,完成LED燈控制,這篇文章就介紹利用這款開發(fā)板繼續(xù)完成按鍵編程,了解GPIO口基本的輸入輸出配置。
    的頭像 發(fā)表于 08-11 09:50 ?1785次閱讀

    最新Cortex-a9開發(fā)板/Exynos4412/iTOP-4412開發(fā)板特點(diǎn)介紹

    `iTOP-Exynos4412開發(fā)板采用 Exynos4412的主芯片,具有更高的主頻和更豐富外設(shè),配置 2GB 雙通道 DDR3的內(nèi)存及16GB 存儲,具有穩(wěn)定性強(qiáng)、可靠性高,能適用于對性能
    發(fā)表于 11-01 11:29

    翼羅電子Samsung四核Exynos4412開發(fā)

    UT-Exynos4412開發(fā)板是一款功能極為強(qiáng)大的高端ARM Cortex-A9開發(fā)平臺,采用Samsung最新的Exynos4412Exyno
    發(fā)表于 04-22 11:25

    exynos4412開發(fā)板 insmod成功但沒有設(shè)備文件

    基于exynos4412開發(fā)板,通過NFS掛載方式啟動時(shí),LED.ko 文件可以 insmod 成功,且可以在/dev目錄下看到相應(yīng)設(shè)備文件,并且正常運(yùn)行;通過上述NFS文件制作成ramdisk
    發(fā)表于 02-28 19:19

    Exynos4412開發(fā)板需要注意的IP地址

    Exynos4412開發(fā)板-網(wǎng)絡(luò)-同一網(wǎng)段
    發(fā)表于 12-28 07:16

    Exynos4412開發(fā)板有什么用

    以三星的四核處理器Exynos4412為例,該開發(fā)板屬于armv7架構(gòu),contexA9系列,32bit,cpu4核心1.5GHZ主頻,eMMC 大小型號為:KLM4G。ARM里面,啟動MMU以后
    發(fā)表于 07-16 06:54

    TINY4412 UART程序設(shè)計(jì)得相關(guān)資料分享

    嵌入式實(shí)驗(yàn): TINY4412 UART 程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康氖煜ART通信相關(guān)的寄存器的功能和設(shè)置方法,設(shè)置引腳復(fù)用,選擇UART接收和發(fā)送對應(yīng)的引腳用于UART通信,數(shù)據(jù)流格式設(shè)置,設(shè)置
    發(fā)表于 11-09 06:11

    基于Exynos4412主芯片的iTOP-Exynos4412開發(fā)板有何優(yōu)點(diǎn)

    光盤資料+網(wǎng)盤資料+配套視頻+售后支持,助您加速學(xué)習(xí)研發(fā)的進(jìn)程 產(chǎn)品介紹 iTOP-Exynos4412開發(fā)板采用 Exynos4412的主芯片,具有更高的主頻和更豐富外設(shè),配置 2GB 雙通道 DDR3的內(nèi)存及 16GB 存儲
    發(fā)表于 12-23 07:35

    如何去實(shí)現(xiàn)Exynos4412開發(fā)板的文件傳輸呢

    tftp和fastboot是什么?fastboot是怎樣通過u***線進(jìn)行連線的?如何去實(shí)現(xiàn)Exynos4412開發(fā)板的文件傳輸呢?
    發(fā)表于 12-27 07:17

    Exynos4412三星ARM四核旗艦開發(fā)平臺android4.0GPS功能

    關(guān)鍵詞:ARM , 4412 , 開發(fā)板 經(jīng)過2012年的等待,四核的開發(fā)平臺終于跟廣大嵌入從業(yè)人員見面了,下面讓我們來看下UT-Exynos 44
    發(fā)表于 10-28 00:56 ?477次閱讀

    samsung首款四核處理器Exynos 4412開發(fā)板友堅(jiān)上市

    關(guān)鍵詞:開發(fā)板 UT-Exynos4412開發(fā)板是一款功能極為強(qiáng)大的高端ARM Coretex-A9開發(fā)平臺,采用Samsung最新的Exynos4
    發(fā)表于 11-01 07:24 ?580次閱讀

    海天雄電子Exynos4412核心板簡介

    Exynos4412核心板基于Samsung Cortex-A9系列Exynos4412四核應(yīng)用處理器,采用SCP封裝,板上集成了2GB DDR3,8GB eMMC,提供專用的三星電源管理芯片,系統(tǒng)更加穩(wěn)定可靠。
    的頭像 發(fā)表于 11-04 10:33 ?2719次閱讀
    海天雄電子<b class='flag-5'>Exynos4412</b>核心板簡介

    友善之臂Tiny4412核心板介紹

    Tiny4412是一款高性能的四核Cortex-A9核心板,由廣州友善之臂設(shè)計(jì)、生產(chǎn)和發(fā)行銷售。
    的頭像 發(fā)表于 11-05 17:40 ?1.2w次閱讀
    友善之臂<b class='flag-5'>Tiny4412</b>核心板介紹

    使用EXYNOS4412處理器實(shí)現(xiàn)防跌倒系統(tǒng)的代碼免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用EXYNOS4412處理器實(shí)現(xiàn)防跌倒系統(tǒng)的代碼免費(fèi)下載。
    發(fā)表于 12-02 08:00 ?2次下載
    使用<b class='flag-5'>EXYNOS4412</b>處理器實(shí)現(xiàn)防跌倒系統(tǒng)的代碼免費(fèi)下載

    嵌入式實(shí)驗(yàn): TINY4412 UART 程序設(shè)計(jì)

    嵌入式實(shí)驗(yàn): TINY4412 UART 程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康氖煜ART通信相關(guān)的寄存器的功能和設(shè)置方法,設(shè)置引腳復(fù)用,選擇UART接收和發(fā)送對應(yīng)的引腳用于UART通信,數(shù)據(jù)流格式設(shè)置,設(shè)置
    發(fā)表于 11-03 20:06 ?13次下載
    嵌入式實(shí)驗(yàn): <b class='flag-5'>TINY4412</b> UART 程序設(shè)計(jì)