页次: 1
香酥肉饼 说:我之前用stm32f070或者f042实现了异步usb声卡,32bit 44.1k~96khz的i2s输出,或者24bit 44.1k~96khz和16bit 44.1k~192khz的spdif输出。/用的spi总线输出的i2s或者spdif
请问你的 F0 是不是要另外加时钟?
F0 要便宜些,我有 F072,不过 audio clock 貌似不好配置,如果做 slave mode i2s 那我就懂了,可是又要整一块 cpld。对没有cpld烧录工具的同学就被挡一道了。
我认为对于 usb audio,异步是分水岭。平时多听网易云之类的,用 full speed 应该很够了。
STM32F446 的 audio clock 看起来很灵活,玩玩看
是的,我用的外部双晶振,24.576M和22.5792M的。
我重新设定了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
检查这条命令的执行情况。
那个中间件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());
}
}
之前晕哥遇到的问题现在解决了,问题溯源: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欢迎改正。
想裁剪一下uboot 去掉USB、网络、MMC等功能,用图形化工具关掉一些网络相关的组件之后编译报错,还有一些网络相关的无法取消,特来请教。
.config - U-Boot 2018.01 Configuration
→ Device Drivers ──────────────────────────────────────────────────────────────────────
┌───────────────────────────────── Device Drivers ─────────────────────────────────┐
│ ┌────↑(-)──────────────────────────────────────────────────────────────────────┐ │
│ │ [ ] Ethernet PHY (physical media interface) support ---- │ │
│ │ -*- Enable Driver Model for Ethernet drivers │ │
│ │ [ ] PCI support ---- │ │
│ │ PHY Subsystem ---> │ │
│ │ [ ] ComPhy SerDes driver │ │
│ │ Pin controllers ---> │ │
│ │ Power ---> │ │
│ │ [ ] Enable support for pulse-width modulation devices (PWM) │ │
│ │ [ ] Enable support for the sandbox PWM │ │
│ │ [ ] Enable RAM drivers using Driver Model │ │
│ │ Remote Processor drivers ---- │ │
│ │ Reset Controller Support ---> │ │
│ │ Real Time Clock ---> │ │
│ │ [ ] Support SCSI controllers │ │
│ │ Serial drivers ---> │ │
│ │ Sound support ---> │ │
│ │ SPI Support ---> │ │
│ │ SPMI support ---> │ │
│ │ System reset device drivers ---> │ │
│ │ [ ] Driver support for thermal devices │ │
│ │ Timer Support ---> │ │
│ │ TPM support ---- │ │
│ │ -*- USB support ---> │ │
│ │ Graphics support ---> │ │
│ │ Watchdog Timer Support ---> │ │
│ │ [ ] Custom physical to bus address mapping │ │
│ └──────────────────────────────────────────────────────────────────────────────┘ │
├──────────────────────────────────────────────────────────────────────────────────┤
│ <Select> < Exit > < Help > < Save > < Load > │
└──────────────────────────────────────────────────────────────────────────────────┘
board/sunxi/built-in.o:在函数‘setup_environment’中:
/home/user/f1c100s/u-boot-nano-v2018.01/board/sunxi/board.c:699:对‘eth_env_set_enetaddr’未定义的引用
arm-linux-gnueabi-ld.bfd: BFD (Linaro_Binutils-2017.11) 2.28.2.20170706 断言失败 /home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/arm-linux-gnueabi/snapshots/binutils-gdb.git~users~linaro~binutils-2_28-branch/bfd/elf32-arm.c:9514
Makefile:1261: recipe for target 'u-boot' failed
make: *** [u-boot] Error 1
页次: 1