不知道有没有错误,小白求求挖坑填坑
最近编辑记录 Jin劲 (2018-07-10 11:04:24)
离线
lds内存地址参考 Allwinner_F1C600_User_Manual_V1.0.pdf
jin@jin-X550JK:~/myboot2$ make clean
rm *.o *.bin
jin@jin-X550JK:~/myboot2$ ls
main.c Makefile mksunxiboot myboot.lds mystart.s
jin@jin-X550JK:~/myboot2$
jin@jin-X550JK:~/myboot2$ make
arm-eabi-as mystart.s -o mystart.o
arm-eabi-gcc -c main.c -o main.o
arm-eabi-ld -Tmyboot.lds mystart.o main.o -o myboot.o
arm-eabi-objcopy -O binary myboot.o myboot.bin
./mksunxiboot/mksunxiboot myboot.bin myboot_sram.bin
File size: 0xb0
Load size: 0xb0
Read 0xb0 bytes
Write 0x200 bytes
jin@jin-X550JK:~/myboot2$ ls
main.c Makefile myboot.bin myboot.o mystart.o
main.o mksunxiboot myboot.lds myboot_sram.bin mystart.s
jin@jin-X550JK:~/myboot2$
//F1C100S上电从ROM启动,检测MMC、SPIFLASH等,./mksunxiboot/mksunxiboot myboot.bin myboot_sram.bin 就是给编译出的文件加入魔数,用于识别。
//mksunxiboot git地址: https://github.com/amery/mksunxiboot
最近编辑记录 Jin劲 (2018-07-02 22:26:44)
离线
使芯片进入fel模式,确保安装好fel工具,输入make write,写入spi flash
jin@jin-X550JK:~/myboot2$ sudo sunxi-fel list
[sudo] jin 的密码:
USB device 001:005 Allwinner F1C100s
jin@jin-X550JK:~/myboot2$ make write
sudo sunxi-fel -p spiflash-write 0 myboot_sram.bin
100% [================================================] 1 kB, 56.8 kB/s
重新上电,用JLink调试
jin@jin-X550JK:~/myboot2$ sudo JLinkExe
SEGGER J-Link Commander V5.00 ('?' for help)
Compiled Jun 8 2015 21:14:06
DLL version V5.00, compiled Jun 8 2015 21:14:03
Firmware: J-Link V9 compiled Jun 2 2222 22:22:22
Hardware: V9.40
S/N: 81480416
Feature(s): GDB, RDI, FlashBP, FlashDL, JFlash, RDDI
VTarget = 3.174V
Info: TotalIRLen = 4, IRPrint = 0x01
Info: CP15.0.0: 0x41069265: ARM, Architecure 5TEJ
Info: CP15.0.1: 0x1D152192: ICache: 32kB (4*256*32), DCache: 16kB (4*128*32)
Info: Cache type: Separate, Write-back, Format C (WT supported)
Found 1 JTAG device, Total IRLen = 4:
#0 Id: 0x07926F0F, IRLen: 04, IRPrint: 0x1, ARM926EJ-S Core
Found ARM with core Id 0x07926F0F (ARM9)
Target interface speed: 100 kHz
J-Link>r
Reset delay: 0 ms
Reset type NORMAL: Using RESET pin, halting CPU after Reset
Info: Core does not stop after Reset, setting WP to stop it.
**************************
WARNING: PC of target system has unexpected value of 0x00000094 after reset.
**************************
Info: CP15.0.0: 0x41069265: ARM, Architecure 5TEJ
Info: CP15.0.1: 0x1D152192: ICache: 32kB (4*256*32), DCache: 16kB (4*128*32)
Info: Cache type: Separate, Write-back, Format C (WT supported)
J-Link>regs
PC: (R15) = 00000094, CPSR = 600000D3 (SVC mode, ARM FIQ dis. IRQ dis.)
Current:
R0 =00000001, R1 =00000022, R2 =00000033, R3 =00000001
R4 =00000055, R5 =00000066, R6 =00000077, R7 =DEADBEEF
R8 =4FA1C028, R9 =03033727, R10=00010020, R11=00000000, R12=00000000
R13=00009FF4, R14=0000006C, SPSR=00000010
USR: R8 =4FA1C028, R9 =03033727, R10=00010020, R11=00000000, R12=00000000
R13=43D7826E, R14=5391700B
FIQ: R8 =AA14036C, R9 =24AE5FF6, R10=C7F9D002, R11=B42000EF, R12=432D957F
R13=57F57D84, R14=221935F0, SPSR=00000010
IRQ: R13=0F419474, R14=66442FD7, SPSR=00000010
SVC: R13=00009FF4, R14=0000006C, SPSR=00000010
ABT: R13=D74F9C67, R14=66E3BEEF, SPSR=00000010
UND: R13=02800000, R14=12EDB4E6, SPSR=00000010
J-Link>
最近编辑记录 Jin劲 (2018-07-02 22:33:26)
离线
离线
会不会是没有从flash加载到sram呢?
离线
楼主这个牛比,我目前是直接用UBOOT启动后,再用IAR+JLINK跑裸机程序,目前卡在中断向量程序,努力ing。
离线
kaokao 说:楼主这个牛比,我目前是直接用UBOOT启动后,再用IAR+JLINK跑裸机程序,目前卡在中断向量程序,努力ing。
你使用u-boot主要目的是什么?初始化DDR ?
是的,初始化DDR
离线
初始化ddr只要调用这里面一个函数可以了,设置几个寄存器。
可以用jlink的初始化脚本。
static void wait_pll_stable(u32_t base)
{
u32_t rval = 0;
u32_t time = 0xfff;
do {
rval = read32(base);
time--;
} while(time && !(rval & (1 << 28)));
}
static void clock_set_pll_cpu(u32_t clk)
{
u32_t n, k, m, p;
u32_t rval = 0;
u32_t div = 0;
if(clk > 720000000)
clk = 720000000;
if((clk % 24000000) == 0)
{
div = clk / 24000000;
n = div - 1;
k = 0;
m = 0;
p = 0;
}
else if((clk % 12000000) == 0)
{
m = 1;
div = clk / 12000000;
if((div % 3) == 0)
k = 2;
else if((div % 4) == 0)
k = 3;
else
k = 1;
n = (div / (k + 1)) - 1;
p = 0;
}
else
{
div = clk / 24000000;
n = div - 1;
k = 0;
m = 0;
p = 0;
}
rval = read32(F1C100S_CCU_BASE + CCU_PLL_CPU_CTRL);
rval &= ~((0x3 << 16) | (0x1f << 8) | (0x3 << 4) | (0x3 << 0));
rval |= (1U << 31) | (p << 16) | (n << 8) | (k << 4) | m;
write32(F1C100S_CCU_BASE + CCU_PLL_CPU_CTRL, rval);
wait_pll_stable(F1C100S_CCU_BASE + CCU_PLL_CPU_CTRL);
}
void sys_clock_init(void)
{
write32(F1C100S_CCU_BASE + CCU_PLL_STABLE_TIME0, 0x1ff);
write32(F1C100S_CCU_BASE + CCU_PLL_STABLE_TIME1, 0x1ff);
write32(F1C100S_CCU_BASE + CCU_CPU_CFG, 0x00020000);
write32(F1C100S_CCU_BASE + CCU_AHB_APB_CFG, 0x00012110);
clock_set_pll_cpu(408000000);
}
从xboot抄来的.
在线
晕哥我是用的你的demo code, 已经有上面这段程序,我目前主要是在研究中断映射问题,冒似要初始化MMU才能重映射。正在慢慢填坑
离线
kaokao 说:晕哥我是用的你的demo code, 已经有上面这段程序,我目前主要是在研究中断映射问题,冒似要初始化MMU才能重映射。正在慢慢填坑
原来如此,搞定了记得分享一下 ^_^
也可以参考 新唐的N3290x/N3292X/NUC97X裸奔例程。
f1c100的中断映射寄存器不给力,目前我只能在初始化时将中断向量表COPY到RAM:0x0处来实现中断跳转,等测试稳定我上传上来。
离线
坐等楼上的中断裸奔例程。
离线
楼主的mksunxiboot和xboot里的mksunxi有和不同,楼主的mksunxiboot我用了下,好像可以正确被识别,但是我用了xboot的mksunxi工具去处理bin,反而跑不起来,而且bin文件会变成8K(原来6k)代码
离线
楼主的mksunxiboot和xboot里的mksunxi有和不同,楼主的mksunxiboot我用了下,好像可以正确被识别,但是我用了xboot的mksunxi工具去处理bin,反而跑不起来,而且bin文件会变成8K(原来6k)代码
可以分析一下工具C源码,其实也就是加上一个文件头部信息
离线
达克罗德 说:楼主的mksunxiboot和xboot里的mksunxi有和不同,楼主的mksunxiboot我用了下,好像可以正确被识别,但是我用了xboot的mksunxi工具去处理bin,反而跑不起来,而且bin文件会变成8K(原来6k)代码
可以分析一下工具C源码,其实也就是加上一个文件头部信息
研究了下搞懂了,xboot的工具是直接修改头的checksum,因为start.S已经有个头了。你的工具是在原来的bin前加个头。
离线
感谢分享!
离线
达克罗德 说:楼主的mksunxiboot和xboot里的mksunxi有和不同,楼主的mksunxiboot我用了下,好像可以正确被识别,但是我用了xboot的mksunxi工具去处理bin,反而跑不起来,而且bin文件会变成8K(原来6k)代码
可以分析一下工具C源码,其实也就是加上一个文件头部信息
求mksunxiboot
离线
Jin劲 说:达克罗德 说:楼主的mksunxiboot和xboot里的mksunxi有和不同,楼主的mksunxiboot我用了下,好像可以正确被识别,但是我用了xboot的mksunxi工具去处理bin,反而跑不起来,而且bin文件会变成8K(原来6k)代码
可以分析一下工具C源码,其实也就是加上一个文件头部信息
求mksunxiboot
https://github.com/amery/mksunxiboot/
https://github.com/amery/mksunxiboot/blob/master/mksunxiboot.c
在线
有大侠在
离线
怎么关闭 底层打印信息
离线
为什么要关闭?直接注释不就可以了吗
离线