您尚未登录。

楼主 #1 2020-02-03 16:17:43

香酥肉饼
会员
注册时间: 2020-01-10
已发帖子: 18
积分: 68

F1C100S的Keil裸机USB+LCD+PWM+GPIO工程搞定,修复GNU工具链BUG

之前晕哥遇到的问题现在解决了,问题溯源:KEIL可以使用 GNU 工具链,但是只能使用指定那些工具链,不是所有的GNU工具链都可以用
感谢达克罗德提供的F1C100S裸机编译工程:
F1C100S裸奔framebuffer+PWM+GPIO驱动
F1C100S裸机usb工程(支持hid和cdc类)
我尝试建立Keil下的F1C100S裸机工程,也遇到了和晕哥一样的问题,GNU工具链在链接的时候出错,最后用C#写了一个中间件解决了这个bug,程序依赖 .Net4.0,同时完善各种脚本,实现了编译结束自动生成bin文件以及使用mksuni打补丁操作,最终的bin文件可以直接烧录到spi-flash运行,也可以烧录到dram运行。
C#写的中间件,修改了下传入GCC的参数,然后用新参数调用gcc.exedebug
TIM截图20200203160923.jpg
为方便下载调试,不用每次都短接,默认下载到ram,可以自修改下载脚本为 "flashtospi.bat",下载到spi-flash
下载脚本修改位置
工程目录下已包含修复的工具链以及烧录程序,不出意外直接打开工程即可以编译下载。
编译链接下载一气呵成。
1.jpg
Keil裸机工程下载:f1c100s_keil.rar
如有其它bug欢迎改正。

最近编辑记录 香酥肉饼 (2020-02-03 16:24:58)

离线

楼主 #4 2020-02-03 18:16:18

香酥肉饼
会员
注册时间: 2020-01-10
已发帖子: 18
积分: 68

Re: F1C100S的Keil裸机USB+LCD+PWM+GPIO工程搞定,修复GNU工具链BUG

小智 说:

那个中间件c#开源吗

其实很简单,源码在此:

static void Main(string[] args)
{
	string a = "";
	if (args.Length == 1)
	{
		if (args[0].StartsWith("@"))
		{
			string name = args[0].Replace("@", "");
			try
			{
				a = System.IO.File.ReadAllText(name, Encoding.Default);
			}
			catch (Exception ex)
			{
				Console.WriteLine(ex.ToString());
				return;
			}
		}  
	}
	else
	{
		for (int i = 0; i < args.Length; i++)
		{
			a += args[i] + " ";
		}
	}
	a = a.Replace("\"", "");
	a = a.Replace("./", "");
	a = a.Replace("\r\n", " ");
	Process cmd = new Process();
	cmd.StartInfo.FileName = AppDomain.CurrentDomain.BaseDirectory +"arm-none-eabi-gcc.exedebug";
	cmd.StartInfo.WorkingDirectory = System.Environment.CurrentDirectory;
	cmd.StartInfo.Arguments = a;
	cmd.StartInfo.UseShellExecute = false;
	cmd.StartInfo.RedirectStandardInput = true;
	cmd.StartInfo.RedirectStandardOutput = true;
	cmd.StartInfo.CreateNoWindow = true;
	cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
	try
	{
		cmd.Start();
		string Text = cmd.StandardOutput.ReadToEnd();
		cmd.WaitForExit();
		cmd.Close();
		Console.Write(Text);
	}
	catch (Exception ex)
	{
		Console.WriteLine(ex.ToString());
	}
}

离线

楼主 #14 2020-02-04 23:33:17

香酥肉饼
会员
注册时间: 2020-01-10
已发帖子: 18
积分: 68

Re: F1C100S的Keil裸机USB+LCD+PWM+GPIO工程搞定,修复GNU工具链BUG

xidaole 说:

我重新设定了GCC设定为:...f1c100s_keil\Toolchain\; 然后编译通过

点下载时,出现一个检验失败。
........
compiling sys-copyself.c...
linking...
After Build - User command #1: Toolchain\bin\arm-none-eabi-objcopy -O binary  Objects\f1c100s.elf Objects\f1c100s.bin
After Build - User command #2: Tools\mksunxi Objects\f1c100s.bin
".\Objects\f1c100s.elf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:  00:00:12
flashtoram.bat
D:\ARM9\f1c100s_mdk\f1c100s_keil>.\Tools\sunxi-fel.exe spl .\Objects\f1c100s.bin
SPL: checksum check failed
D:\ARM9\f1c100s_mdk\f1c100s_keil>.\Tools\sunxi-fel.exe -p write 0x80000000 .\Objects\f1c100s.bin
100% [================================================]    42 kB,  207.9 kB/s
D:\ARM9\f1c100s_mdk\f1c100s_keil>.\Tools\sunxi-fel.exe exec 0x80000000

After Build - User command #2: Tools\mksunxi Objects\f1c100s.bin
检查这条命令的执行情况。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn