之前晕哥遇到的问题现在解决了,问题溯源: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
为方便下载调试,不用每次都短接,默认下载到ram,可以自修改下载脚本为 "flashtospi.bat",下载到spi-flash
工程目录下已包含修复的工具链以及烧录程序,不出意外直接打开工程即可以编译下载。
编译链接下载一气呵成。
Keil裸机工程下载:f1c100s_keil.rar
如有其它bug欢迎改正。
最近编辑记录 香酥肉饼 (2020-02-03 16:24:58)
离线
那个中间件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());
}
}
离线
我重新设定了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
检查这条命令的执行情况。
离线