Tiny4412 小试牛刀
? Tiny4412 企鵝群:531915497 ,歡迎一起交流~??
? 最近搞了一塊友善之臂的 Tiny4412 開發板,打算后期拿它來學習 Android ,但是在此之前呢,還是先用它來加深一下對 Linux 的學習。Tiny4412 開發板硬件與之前接觸的 s3c2440 各個系列的開發板有很大的不同,cpu 4核,采用 1G DDR3 ,4G emmc .網卡是 usb 接口的 9261 。光盤里的帶的文件系統貌似也不再是我們之前在 nandflash 上使用的 yaffs2 jffs2 等。還有它可以使用 fastboot 來進行快速燒寫。
? 友善提供的 Bootloader 是 superboot4412 ,這是友善自己的東西,并不開源,它支持 minitools 燒寫,也可以使用 sd 卡進行系統的燒寫。但是,由于它是閉源,而且都是傻瓜式操作,并不利于我們的學習,因此,我決定還是先嘗試移植 uboot 來了解 4412 的板級硬件。
? 上來直接移植肯定是不靠譜的,先來嘗試一下別人搞好的 uboot ,感受一下這塊牛叉開發板的魅力。
? 友善光盤里提供了一個移植 ok 的 uboot ,uboot_tiny4412-20130729.tgz ,據說是網友移植好提供給友善的,友善并不對這個 uboot 提供技術支持,更壞的消息是,這個 uboot 適用于 4412 的第一個版本 tiny4412-1306 ,在它之后的 tiny4412-1412 tiny4412-1506 在硬件上有些改動,直接導致 uboot 不能直接使用的改動是友善將 1306 上的 4 塊 DDR3 改成了 2 塊DDR3 ,那么對 DDR3 的初始化部分肯定是需要修改才能使用的。
? 拆下 LCD ,可有看到我們板子的版本,我的是:Tiny4412/super4412sdk 1506?
? 直接按照光盤里的說明進行編譯出來的 uboot 跑起來只能打印一個 ok !由于現在我對 ddr3 并不了解,只能借助強大的搜索引擎了,站在前人的肩膀上總是事半功倍。
? 針對 DDR3 的問題參考:http://www.cnblogs.com/kevinhwang/p/5617629.html 進行簡單的修改即可。修改完成之后編譯就能看見正常的 uboot 信息了。
? 目前,我選擇的是 sd 卡啟動,接下來的工作是把 uboot kernel rootfs 燒寫到 emmc 中。在之前 2440 學習時,最常用的燒寫方式應該是 tftp 下載到內存,然后用 uboot 進行燒寫,dnw 也可以,由于我是 win10 ,dnw 驅動有些問題一直沒有使用過。現在有一個問題就是,tiny4412 使用的是 usb 接口的網卡,目前的 uboot 根本就不支持這個網卡,所以網絡下載沒戲了,只能使用 dnw 了,windows 下驅動不行,那就 linux 下吧。
? Linux下的dnw安裝參考:?http://blog.sina.com.cn/s/blog_69dd1a09010196bf.html?
? 比較悲劇的是,我的驅動 insmod 到虛擬機之后,并沒有?secbulk0 這個設備,原因是我下載的 dnw_for_linux 里邊的 driver 它的 id_table 里并不支持我這款 usb ,因此就不會創建 secbulk0 這個設備了,把我們 usb 的信息添加到它的 id_table 里不就 OK 了。
? 這個問題參考:http://blog.csdn.net/u011452544/article/details/39393857
? 燒寫 uboot 到 emmc 參考:http://www.cnblogs.com/pengdonglin137/p/4161084.html
? 燒寫完成之后,開關撥到 emmc 啟動,就可以看到 uboot 的打印信息了。
? 接下來是內核和文件系統的燒寫,這個網上的資料都是采用 fastboot 來燒寫,都是一筆帶過的。這里我簡單啰嗦一下。由于我是在虛擬機上使用 dnw ,串口 crt 是在 windows 上,我在 crt uboot 中執行 fastboot 時,dnw 的 usb 是默認在 windows 上的,切換到 linux 上仍有些問題,不知為何。索性直接串口工具換 Minicom ,在 linux / minicom 上執行 fastboot ,板子的 usb 設備就直接跑到虛擬機上來了,就可以使用 fastboot 了。我的虛擬機沒有 fastboot ,執行一下 fastboot 系統會提示你如何安裝的,很簡單。
? 首先編譯內核,我用的是光盤里的 linux-3.5-20151029.tgz 生成的zImage 在 arc/arm/boot 目錄下
? minicom/u-boot 輸入:
? ? fastboot
? 虛擬機另一個終端:
? ? fastboot flash kernel zImage
? ? fastboot flash ramdisk?ramdisk-u.img
? ? fastboot flash fat rootfs_qtopia_qt4.img?
? ? fastboot reboot?
? 至于為什么文件系統燒寫到 fat ,這個我是蒙的。根據分區大小來猜的,誰讓咱現在對這個 fastboot 也不懂呢。
? 我的 bootargs:bootargs=root=/dev/mmcblk0p1 rootfstype=ext4 console=ttySAC0,115200 init=/linuxrc ctp=2 skipcali=y loglevel=7
? 我的 boorcms:bootcmd=movi read kernel 0 40008000;movi read rootfs 0 41000000 100000;bootm 40008000 41000000
? 一切燒寫完畢之后,一個悲劇的問題來了 卡死在:Uncompressing Linux... done, booting the kernel.
? 根據以往的經驗,有可能是 bootargs 傳遞參數不對,比如沒有指明波特率,又或者 uboot 默認傳遞給內核的機器 ID 不是 tiny4412 的(0x1200),經過我的驗證排除這倆問題。難不成友善提供的內核有問題?經過百度:
? make menuconfig
? 進入 System Type
? 去掉配置項 Support TrustZone-enabled Trusted Execution Environment 再重新編譯內核即可!
? 這個東西貌似是給 superboot4412 是用的,我們的 uboot 并不支持。
? 從晚上8、9點搞到凌晨兩點半,總算是跑起來了,但是有太多太多的疑問,相信,在后邊的學習過程中,這些問題都會有答案。
補丁文件:http://download.csdn.net/detail/lizuobin2/9713618
總結
以上是生活随笔為你收集整理的Tiny4412 小试牛刀的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python如何确定拐点_多年股市老鸟买
- 下一篇: decimal转为string sql_