CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 7470|回复: 6

cubieboard 2 如何运行自己的裸板代码?需要u-boot吗?

[复制链接]
发表于 2016-5-11 13:55:23 | 显示全部楼层 |阅读模式
我现在有一个类似于ucos的操作系统的代码,是其他arm芯片的,我需要在cubieboard 2上面运行该系统。

我想问一下各位大神大概的方向是什么,因为我没有什么基础,不太清楚该如何做。。

我了解一下cubieboard 2的启动过程,过程是通过先启动TF卡的8KB处的spl-u-boot,然后启动了接下来的系统,我想问一下我是不是需要自己编译链接自己的系统,然后把这个镜像作为u-boot的启动对象??还是直接烧写到TF卡的8KB处直接运行??

不好意思因为我实在是缺少太多知识,还请各位大神指明方向
回复

使用道具 举报

发表于 2016-5-12 15:39:00 | 显示全部楼层


要移植ucos系统到cubieboard比较困难;cubieboard的启动流程可以参考:http://www.cubie.cc/forum.php?mod=viewthread&tid=1171

回复 支持 反对

使用道具 举报

发表于 2016-5-21 17:23:47 | 显示全部楼层
我手上的是Cubieboard 2雙卡版。
從A20的開機流程,當加載SD卡和NAND失敗時,最後會使用USB boot, 請問怎樣使用這個USB boot?
為免過多燒寫SD卡和拔插SD卡, 縮短壽命, 我想把編繹好的裸機代碼, 經過USB接口, 直接下載到板上的DDR 內存運行, 開發完成後才把代碼燒入SD卡。
請問可以有方法在不使用SD卡的情況下,把代碼經USB下載到內存運行嗎?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-1 16:10:55 | 显示全部楼层
已经搞明白了,都可以的.
如果用u-boot启动,用fatload加载二进制镜像到mmc中运行.
如果直接启动,使用boot make工具来启动二进制镜像,当然镜像要放在8Kb处
回复 支持 反对

使用道具 举报

发表于 2016-6-2 10:29:49 | 显示全部楼层
razer 发表于 2016-5-21 17:23
我手上的是Cubieboard 2雙卡版。
從A20的開機流程,當加載SD卡和NAND失敗時,最後會使用USB boot, 請問怎樣 ...

http://docs.cubieboard.org/tutor ... rom_usb_in_fel_mode
回复 支持 反对

使用道具 举报

发表于 2016-6-9 17:12:32 | 显示全部楼层
謝謝版主,在試用那個USB-boot前, 我想先用SD卡運行一遍自己的代碼, 再用USB-boot工具下載並運行自己的代碼,來檢查一下運行結果是否相同, 來判斷自己是否使用USB-boot正確。
測試代碼是點亮Cubieboard 2雙卡版上的LED1 和LED2。然而,從SD卡啟動時, 未能點亮兩個LED。代碼應該沒問題, 但反編繹時, 內容出現問題。
r1應該是儲存設定PH20和PH21引腳(控制LED1和LED2開關)的暫存器地址, 但反編內容顯示, 它把PC加上offset輸入進r1, PC加上offset的數值不等於設定引腳的暫存器地址。
請問那個地方出現問題? 我把代碼start.S, 反編內容和Makefile列出來,望高手指點,謝謝

start.S
  1. .globl _start

  2. //        I/O register base address 0x01C20800
  3. _start:
  4.         // 设置PH_CFG2的bit[16:22],配置PH20,PH21引脚为输出功能

  5.         ldr r1, =0x01C20904                                        
  6.         ldr r0, =0x00110000
  7.         str r0, [r1]

  8.         mov r2, #0x1000
  9. led_blink:
  10.         // 设置PH_DAT的bit[20:21],使PH20,PH21引脚输出低电平,LED亮
  11.         ldr r1, =0x01C2090C                                        
  12.         mov r0, #0
  13.         str r0, [r1]

  14.         // 延时
  15.         bl delay                                                       

  16.         // 设置PH_DAT的bit[20:21],使PH20,PH21引脚输出高电平,LED灭
  17.         ldr r1, =0x01C2090C                                       
  18.         mov r0, #0x00f00000
  19.         str r0, [r1]

  20.         // 延时
  21.         bl delay       

  22.         sub r2, r2, #1
  23.         cmp r2,#0
  24.         bne led_blink


  25. halt:
  26.         b halt


  27. delay:
  28.         mov r0, #0x100000
  29. delay_loop:
  30.         cmp r0, #0
  31.         sub r0, r0, #1
  32.         bne delay_loop
  33.         mov pc, lr
复制代码
反編繹內容

  1. led.elf:     file format elf32-littlearm


  2. Disassembly of section .text:

  3. 00000000 <_start>:
  4.    0:        e59f104c         ldr        r1, [pc, #76]        ; 54 <delay_loop+0x10>
  5.    4:        e3a00811         mov        r0, #1114112        ; 0x110000
  6.    8:        e5810000         str        r0, [r1]
  7.    c:        e3a02a01         mov        r2, #4096        ; 0x1000

  8. 00000010 <led_blink>:
  9.   10:        e59f1040         ldr        r1, [pc, #64]        ; 58 <delay_loop+0x14>
  10.   14:        e3a00000         mov        r0, #0
  11.   18:        e5810000         str        r0, [r1]
  12.   1c:        eb000007         bl        40 <delay>
  13.   20:        e59f1030         ldr        r1, [pc, #48]        ; 58 <delay_loop+0x14>
  14.   24:        e3a0060f         mov        r0, #15728640        ; 0xf00000
  15.   28:        e5810000         str        r0, [r1]
  16.   2c:        eb000003         bl        40 <delay>
  17.   30:        e2422001         sub        r2, r2, #1
  18.   34:        e3520000         cmp        r2, #0
  19.   38:        1afffff4         bne        10 <led_blink>

  20. 0000003c <halt>:
  21.   3c:        eafffffe         b        3c <halt>

  22. 00000040 <delay>:
  23.   40:        e3a00601         mov        r0, #1048576        ; 0x100000

  24. 00000044 <delay_loop>:
  25.   44:        e3500000         cmp        r0, #0
  26.   48:        e2400001         sub        r0, r0, #1
  27.   4c:        1afffffc         bne        44 <delay_loop>
  28.   50:        e1a0f00e         mov        pc, lr
  29.   54:        01c20904         biceq        r0, r2, r4, lsl #18
  30.   58:        01c2090c         biceq        r0, r2, ip, lsl #18

  31. Disassembly of section .ARM.attributes:

  32. 00000000 <.ARM.attributes>:
  33.    0:        00001e41         andeq        r1, r0, r1, asr #28
  34.    4:        61656100         cmnvs        r5, r0, lsl #2
  35.    8:        01006962         tsteq        r0, r2, ror #18
  36.    c:        00000014         andeq        r0, r0, r4, lsl r0
  37.   10:        412d3705         teqmi        sp, r5, lsl #14
  38.   14:        070a0600         streq        r0, [sl, -r0, lsl #12]
  39.   18:        09010841         stmdbeq        r1, {r0, r6, fp}
  40.   1c:        Address 0x0000001c is out of bounds.
复制代码
Makefile
  1. CROSS_COMPILE=arm-linux-gnueabihf-
  2. AS                = $(CROSS_COMPILE)as
  3. LD                = $(CROSS_COMPILE)ld
  4. CC                = $(CROSS_COMPILE)gcc
  5. OBJCOPY                = $(CROSS_COMPILE)objcopy
  6. OBJDUMP                = $(CROSS_COMPILE)objdump

  7. led.bin: start.o
  8.         $(LD) -Ttext 0x0 -o led.elf $^
  9.         $(OBJCOPY) -O binary led.elf led.bin
  10.         $(OBJDUMP) -D led.elf > led_elf.dis

  11.        
  12. %.o : %.S
  13.         $(CC) -o $@ $< -c

复制代码

回复 支持 反对

使用道具 举报

发表于 2016-6-18 17:59:19 | 显示全部楼层
本帖最后由 razer 于 2016-6-18 18:16 编辑

參考過jiangdou的貼, 原來要給編繹好的bin增加頭文件
http://www.cubie.cc/forum.php?mod=viewthread&tid=3099&extra=page%3D2

編譯好貼內12樓的mksunxiboot.c後使用,

或根據u-boot-sunxi (branch: mirror\next) 路徑arch/arm/include/asm/arch-sunxi內的spl.h, 增加(branch: wip\a20) 內的mksunxiboot.c內的頭文件boot_file_head長度, 之後再編譯使用
https://github.com/linux-sunxi/u-boot-sunxi


終於可以進入下一步了

對於反編譯的內容也了解了, 原來把PH_CFG2和PH_DAT的地址放在bin檔的最後, 所以(PC+0x54)指示的儲存位置就是PH_CFG2的地址
   0:        e59f104c         ldr        r1, [pc, #76]        ; 54 <delay_loop+0x10>
.............
  54:        01c20904         biceq        r0, r2, r4, lsl #18
  58:        01c2090c         biceq        r0, r2, ip, lsl #18

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-5-6 20:42 , Processed in 0.022507 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部