WhyCan Forum

本站无需注册,无需积分,无需回复可下载所有资料,如果真的喜欢小站,请您注册之后请至少回复一个帖子激活Id,谢谢支持! 站长QQ: 516333132 (挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#1 2018-07-02 22:14:08

Jin劲
会员
注册时间: 2018-04-06
累计积分: 208

小白求求挖坑填坑,f1c100s小小sram裸机

不知道有没有错误,小白求求挖坑填坑

文章有误删除

最近编辑记录 Jin劲 (2018-07-10 11:04:24)

离线

#2 2018-07-02 22:19:04

Jin劲
会员
注册时间: 2018-04-06
累计积分: 208

Re: 小白求求挖坑填坑,f1c100s小小sram裸机

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)

离线

#3 2018-07-02 22:26:58

Jin劲
会员
注册时间: 2018-04-06
累计积分: 208

Re: 小白求求挖坑填坑,f1c100s小小sram裸机

使芯片进入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>


     R0 =00000001, R1 =00000022, R2 =00000033, R3 =00000001
     R4 =00000055, R5 =00000066, R6 =00000077, R7 =DEADBEEF

最近编辑记录 Jin劲 (2018-07-02 22:33:26)

离线

#4 2018-07-02 23:01:53

Jin劲
会员
注册时间: 2018-04-06
累计积分: 208

Re: 小白求求挖坑填坑,f1c100s小小sram裸机

求解答,为啥读出来不是俺程序的第一条机器码

F6.png

离线

#5 2018-07-03 09:33:26

sindy
会员
注册时间: 2017-09-09
累计积分: 143

Re: 小白求求挖坑填坑,f1c100s小小sram裸机

会不会是没有从flash加载到sram呢?

离线

#6 2018-07-03 13:51:40

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 7,403

Re: 小白求求挖坑填坑,f1c100s小小sram裸机

mksunxiboot 这个做出来的 bin 文件,一定能给 f1c100s 加载吗?
做一个全是 0xFFFFFFFF 的文件, mksunxiboot 之后烧录到flash, 然后用jlink看 sram 是否正确?

离线

#7 2018-07-03 14:03:31

kaokao
会员
注册时间: 2018-06-06
累计积分: 30

Re: 小白求求挖坑填坑,f1c100s小小sram裸机

楼主这个牛比,我目前是直接用UBOOT启动后,再用IAR+JLINK跑裸机程序,目前卡在中断向量程序,努力ing。

离线

#8 2018-07-03 14:09:16

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 7,403

Re: 小白求求挖坑填坑,f1c100s小小sram裸机

kaokao 说:

楼主这个牛比,我目前是直接用UBOOT启动后,再用IAR+JLINK跑裸机程序,目前卡在中断向量程序,努力ing。

你使用u-boot主要目的是什么?初始化DDR ?

离线

#9 2018-07-03 15:18:06

kaokao
会员
注册时间: 2018-06-06
累计积分: 30

Re: 小白求求挖坑填坑,f1c100s小小sram裸机

晕哥 说:
kaokao 说:

楼主这个牛比,我目前是直接用UBOOT启动后,再用IAR+JLINK跑裸机程序,目前卡在中断向量程序,努力ing。

你使用u-boot主要目的是什么?初始化DDR ?

是的,初始化DDR

离线

#10 2018-07-03 15:43:16

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 7,403

Re: 小白求求挖坑填坑,f1c100s小小sram裸机

https://whycan.cn/t_1003.html

初始化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抄来的.

离线

#11 2018-07-03 18:37:14

kaokao
会员
注册时间: 2018-06-06
累计积分: 30

Re: 小白求求挖坑填坑,f1c100s小小sram裸机

晕哥我是用的你的demo code, 已经有上面这段程序,我目前主要是在研究中断映射问题,冒似要初始化MMU才能重映射。正在慢慢填坑

离线

#12 2018-07-03 18:53:06

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 7,403

Re: 小白求求挖坑填坑,f1c100s小小sram裸机

kaokao 说:

晕哥我是用的你的demo code, 已经有上面这段程序,我目前主要是在研究中断映射问题,冒似要初始化MMU才能重映射。正在慢慢填坑

原来如此,搞定了记得分享一下 ^_^
也可以参考 新唐的N3290x/N3292X/NUC97X裸奔例程。

离线

#13 2018-07-03 20:47:18

kaokao
会员
注册时间: 2018-06-06
累计积分: 30

Re: 小白求求挖坑填坑,f1c100s小小sram裸机

晕哥 说:
kaokao 说:

晕哥我是用的你的demo code, 已经有上面这段程序,我目前主要是在研究中断映射问题,冒似要初始化MMU才能重映射。正在慢慢填坑

原来如此,搞定了记得分享一下 ^_^
也可以参考 新唐的N3290x/N3292X/NUC97X裸奔例程。

f1c100的中断映射寄存器不给力,目前我只能在初始化时将中断向量表COPY到RAM:0x0处来实现中断跳转,等测试稳定我上传上来。

离线

#14 2018-07-03 21:10:03

超级萌新
会员
注册时间: 2018-05-04
累计积分: 267

Re: 小白求求挖坑填坑,f1c100s小小sram裸机

坐等楼上的中断裸奔例程。

离线

#15 2018-07-10 10:10:00

达克罗德
会员
注册时间: 2018-04-10
累计积分: 552

Re: 小白求求挖坑填坑,f1c100s小小sram裸机

楼主的mksunxiboot和xboot里的mksunxi有和不同,楼主的mksunxiboot我用了下,好像可以正确被识别,但是我用了xboot的mksunxi工具去处理bin,反而跑不起来,而且bin文件会变成8K(原来6k)代码

离线

#16 2018-07-10 11:05:26

Jin劲
会员
注册时间: 2018-04-06
累计积分: 208

Re: 小白求求挖坑填坑,f1c100s小小sram裸机

达克罗德 说:

楼主的mksunxiboot和xboot里的mksunxi有和不同,楼主的mksunxiboot我用了下,好像可以正确被识别,但是我用了xboot的mksunxi工具去处理bin,反而跑不起来,而且bin文件会变成8K(原来6k)代码

可以分析一下工具C源码,其实也就是加上一个文件头部信息

离线

#17 2018-07-11 14:38:11

达克罗德
会员
注册时间: 2018-04-10
累计积分: 552

Re: 小白求求挖坑填坑,f1c100s小小sram裸机

Jin劲 说:
达克罗德 说:

楼主的mksunxiboot和xboot里的mksunxi有和不同,楼主的mksunxiboot我用了下,好像可以正确被识别,但是我用了xboot的mksunxi工具去处理bin,反而跑不起来,而且bin文件会变成8K(原来6k)代码

可以分析一下工具C源码,其实也就是加上一个文件头部信息

研究了下搞懂了,xboot的工具是直接修改头的checksum,因为start.S已经有个头了。你的工具是在原来的bin前加个头。

离线

#18 2018-07-13 15:34:42

arphone
会员
注册时间: 2017-11-03
累计积分: 63

Re: 小白求求挖坑填坑,f1c100s小小sram裸机

感谢分享!

离线

#19 2019-08-26 12:18:13

wangzhg1
会员
注册时间: 2019-08-24
累计积分: 18

Re: 小白求求挖坑填坑,f1c100s小小sram裸机

Jin劲 说:
达克罗德 说:

楼主的mksunxiboot和xboot里的mksunxi有和不同,楼主的mksunxiboot我用了下,好像可以正确被识别,但是我用了xboot的mksunxi工具去处理bin,反而跑不起来,而且bin文件会变成8K(原来6k)代码

可以分析一下工具C源码,其实也就是加上一个文件头部信息

求mksunxiboot

离线

#20 2019-08-26 13:37:51

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 7,403

Re: 小白求求挖坑填坑,f1c100s小小sram裸机

wangzhg1 说:
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

离线

页脚