新唐ARM9之NUC972学习历程之系统的搭建和BSP包的使用
说到嵌入式,我们首先想到的,就是它的复杂程度,LINUX,BSP,UBOOT,交叉编译,寄存器配置,等等一系列的问题,甚至有的时候我们对此一头雾水,很是头疼,不过我们今天要说的就是关于NUC972的一系列的步骤,和解决它的难题。
1 NUC970 Linux BSP 簡介
這包 BSP 支持了NUC970 系列芯片. 新唐科技的 NUC970 系列芯片是以 ARM926EJS 為核心的系统级單芯片. 包含了 16kB I-Cache 以及 16kB D-Cache 以及MMU 記憶體管理模塊. 最高支援到 300MHz 的頻率, 並且提供了豐富的外設接口周邊. 有USB 快速Host/Device, SDHC, 支援TFT LCD介面, 網路接口 和I2S audio介面, 有11 組UART…等. 並可以由 NAND flash, SPI Flash 開機.
這包 Linux BSP 包含了以下內容:
Linux 3.10 內核源碼, 以及 NUC970 使用的驅動程式
GCC 4.8.4 交叉編譯器, 支持 EABI.
uClibc-0.9.33 庫文件
Binutils-2.24 交叉開發工具
演示個接口功能的範例程式源碼, 以及一些開源軟件
U-Boot 源碼, 以及 NUC970 使用的驅動程式
Windows 端燒錄程序 Nu-Writer, 以及所需的驅動
說明文檔
1.1 開發環境連線
在Linux 環境下, 基本的系統訊息以及 shell 環境的溝通都是透過串口來達成. 不論是U-Boot 或是Linux 均使用 UART0 來做為訊息溝通的接口. 在 U-Boot 環境下, 也支援了網口 TFTP 的傳輸. 另外新唐也提供了基於 Windows 平台的 USB 介面燒寫工具. 以下是開發環境連線的示意圖. 若是使用虛擬機, 則只需要一台 PC 即可

1.2 開發板設置
NUC970 系列芯片支持不同的開機模式, 可從 SPI, NAND, eMMC 開機, 或是進入 USB ISP 模式. 這些設置是透過 PA[1:0] 的 jumper 控制. 另外, 因為複用腳位的關係, 開發版上會有些 jumper 須依不同系統需求來設置. 請參考開發版的文件來做系統相應的設置.
NUC970 Linux BSP 提供了基於 Linux 作業系統的交叉編譯環境. 新唐有在不同的 x86 Linux 環境測試了本 BSP, 包含了 Ubuntu, CentOS, Debian…等. 因 Linux 發行版眾多, 系統設置會有些許差異, 有時使用這需更改系統設置, 使開發環境順利執行,本人用的是UBUNTU 64位,推荐32位LINUX。
Linux 開發環境可選擇架設原生環境, 或是選擇架設於 Windows 作業系統中的虛擬機上. 关于如何安装虚拟机,或者如何安装LINUX,或者如何安装虚拟机,请看我在Linux里面发表的文章里观看,查阅。
多數的 Linux 發行版不會將所有的原件都安裝. 但有些元件在使用 BSP 的開發過程中是必須的. 另外有些元件可讓開發的過程更加順利. 以下列了一些Linux 安裝過程會省略, 但必須及建議安裝的原件.
各個Linux 發行版的元件安裝介面不盡相同. Ubuntu 的使用者可以使用 apt-get 命令或是Synaptic Package Manager 來安裝元件. 而 Fedora的使用者可以使用 rpm 命令或是 Package Manager來安裝元件. 請參考所使用的 Linux 發行版文件來安裝缺少的元件.
这一段倒是没有什么复杂的地方
Linux BSP 包含了三個目錄. 各目錄的內容列在下表:

請將 BSP 目錄中的壓縮包複製到 Linux 開發機器上. 並使用以下的命令解壓縮 : $ tar

在此目錄中有安裝腳本 install.sh. 此腳本需要管理者權限才可以執行. 可以選擇使用 “su” 命令切換到管理者來執行:

或是使用 sudo 來執行安裝腳本 (若是安裝的 Linux 沒有開放 root 權限, 例如 Ubuntu, 則可以使用本方式來安裝 BSP)

本安裝腳本支援本地源碼解壓縮, 或是自网络上的源码库复制最新版本. 若是選擇自源码库複製, 系統中需要預先安裝 Git 以及網路連線正常, 以便自Github 或是 OSChine下載最新的源碼. 以下為整個安裝過程:


若是使用的 Linux 開發環境之前已經安裝過新唐提供的交叉編譯工具, 安裝腳本會詢問是否須複寫編譯工具, 否則腳本並不會詢問使用者, 而是直接在 /usr/local/arm_linux_4.8目錄安裝編譯工具. 在第一種已安裝過編譯工具的情況下, 若是要複寫, 可按Y (或是 yes、y、YES), 然後按 Enter 鍵.
安裝完成交叉編譯工具後, 安裝腳本會詢問安裝 Linux 內核, U-Boot, 以及範例程序的絕對路徑. 下表列出了會裝在指定目錄中的項目.


安裝腳本會嘗試將安裝的目錄設置正確權限, 並將交叉編譯器的路經加至系統搜尋路徑 ($PATH)中. 但在有些 Linux 版本中, 可能發生無法正確設置的問題. 此時需麻煩使用者手動設置正確的權限並且將/usr/local/arm_linux_4.8/bin加到 $PATH 中.
請注意, 在安裝完成後, 使用者須先登出再登入, $PATH 的設定才會生效.
若是安裝過程選擇自網絡複製源碼, 之後使用者可以至源碼倉庫以git pull 命令同步最新的更新. 以下列出各個源碼倉庫的鏈結. Git 的操作指令不在本文件的說明範圍, 但可以至 https://git-scm.com/ 查詢基本的操作方式.

新唐ARM9之NUC972学习历程之系统的搭建和BSP包的使用的更多相关文章
- 新唐N32905U1DN开发教程:MDK环境下工程搭建(官方提供的固件库)(转)
前言:新唐N32905U1DN单片机不支持用户将程序烧录到内部FLASH,必须外挂FLASH存储用户程序,可以是SPI FLASH.NAND FLASH.SD卡.用户采用裸机开发的方式可使用官方提供的 ...
- 从51跳新唐cortex学习3——细说新唐两种定时器
的定时器我们已经是相当熟悉啦.但是,对于第一次接触新唐,第一次接触cortex的定时器一样,都是加1计数,但是功能和容量变大了),包括4个32位定时器(里面放24位的数据),还有分频功能.TMER0到 ...
- 从51跳新唐cortex-m0学习1——思想转变
Cortex-M0学习第一帖 序言:这里先说一下,大家在看帖子时候,可能看见字数比较多的,可能只是先大概浏览一下,之后从中挑几段大概瞅瞅,但是我要说,如果你碰到一个适合的帖子,请仔细品读,这是我在论坛 ...
- 单片机入门学习笔记6:新唐单片机N76E003
学习新唐单片机是从2018年3月开始的,之前一点也不懂这一块单片机,之后脉络变的越来越清晰. 由于N76E003档次太低,新塘科技官方的管脚配置,芯片选型……都没有这一块芯片,资料唯独只有:芯片的数据 ...
- 我的Linux学习历程:那些我看过的Linux书籍们
[+]查看原图http://www.ituring.com.cn/article/119401 来北京工作已经一个多月,大都市的生活比起读大学要忙碌得多,尤其是出行,基本以小时为基本的计时单位.有时茫 ...
- Linux学习历程——Centos 7重置root密码
一.自述 最近刚刚接触linux,因为我设置密码比较随性,把自己做系统的时候设置的root密码给forget,每当系统崩溃,重新把虚拟机备份还原后,就面临无法登陆的尴尬情况,只得重置root密码,好了 ...
- Nginx系列0:Nginx学习历程
Nginx学习历程 一.初识Nginx 1.Nginx适用于哪些场景 (1)静态资源服务 通过本地文件系统提供服务 (2)反向代理服务 Nginx的强大性能 缓存 负载均衡 (3)API服务 Open ...
- 新唐的开发环境的搭建,驱动以及BSP
https://www.keil.com/demo/eval/arm.htm#DOWNLOAD1,MDK-ARM的IDE集成开发环境:mdk512.exehttp://www.keil.com/fid ...
- 说说新唐ARM9(未完待续)
针对通用32位微控制器的NUC970系列嵌入了由RISC机器有限公司设计的RISC处理器ARM926EJ-S,运行频率高达300 MHz,具有16 KB的I-cache,16 KB的D-cache和M ...
随机推荐
- [转]一步一步部署SSIS包图解教程
本文就SQL统计分析SSIS包的部署进行一次详细的部署图解教程,Sql Server Integration Services 提供了非常简单的部署工具,利用这些工具可以方便地将包文件(*.dtsx) ...
- Java程序员面试之葵花宝典
程序员面试之葵花宝典 1.面向对象的特征有哪些方面 抽象:抽象就是忽略一个主题中与当前目标 无关的那些方面, 以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而 只是选择其中的一部 ...
- 加载jquery主函数的两种方式
方式一: $(document).ready(fucntion){ var div1 = document.getElementById("div1"); alert(div1); ...
- linux中vim中文显示乱码
这里所说的都是全局设定,打开vimrc文件后,只需要在文件最后添加以下代码就可以了: set fileencodings=utf-8,gb2312,gbk,gb18030 set termencodi ...
- 如何在WebService中重载方法
1. 本来在WebService中这样写的重载方法,如下所示: [WebService(Namespace = "http://tempuri.org/")] [WebSer ...
- gdb常用
调试信息条件:-g或-gdbgcc -g -o test test.cgcc -ggdb3 -o test test.cggdb3告诉gcc,使用gdb的扩展产生调试符号.其中“3”表示使用的是第三 ...
- ORACLE11G 字符集更改(这里更改为AL32UTF8)
ORACLE11G 字符集更改(这里更改为AL32UTF8)更改步骤:1.用sysdba角色用户登录sqlplus: 命令行输入:sqlplus sys as sysdba 2.输入口令,进入sqlp ...
- 问题解决-某些项目因位于工作空间目录中而被隐藏 & 如何解决java项目导入出错:与另一项目重叠
有时候我们导入现有的工程时会出现错误,没有继续下一步的那个按钮,错误提示如下:some projects were hidden because they exist in the workspace ...
- C++类的成员函数的形参列表后面的const
看到(C++ Primer)类的成员函数这里,突然对成员函数形参列表后面的const感到迷惑. 因为书中开始说是修饰隐含形参this的,然后又说是声明该函数是只读的. 大为不解! 翻资料.找人讨论.. ...
- devstack install attributeError: 'module' object has no attribute '__version__'
work around: edit the file /usr/local/lib/python2.7/dist-packages/openstack/session.py and remove th ...