我们有一个使用3.2内核的ARM9 - 一切似乎都运行正常.最近我被要求添加一些代码,以便在启动时在某些GPIO线上添加50ms脉冲.脉冲代码很好; 正如预期的那样,我可以看到线条向下和向上.什么不能按我预期的方式工作udelay().阅读文档使我认为单位是微秒,但在逻辑分析仪中测量它太短.所以我最后添加了这段代码来获得50ms.
// wait 50ms to be sure PCIE reset takes
for (i=0;i<6100;i++) // measured on logic analyzer - seems wrong to me!!
{
__udelay(2000); // 2000 is max
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢它,但它工作正常.代码中有一些奇怪的常量和指令udelay.有人可以告诉我这应该如何工作?在所有时钟初始化之后调用此代码,因此其他所有内容似乎都可以.
我正在尝试将Eclipse与现有的代码库一起使用.此代码将Makefile隐藏在项目源根目录下的几个目录中.如果我告诉eclipse这个埋藏的目录是项目的根目录,那么所有内容都会构建,但没有索引,因为Eclipse不知道源代码的来源.
如果我告诉Eclipse使用源的根,那么我就无法使Eclipse使用隐藏的makefile.
我已经阅读了Eclipse makefile问题的其他答案,但是我仍然遇到让Eclipse完美运行的问题 - 我还尝试了一个使用埋藏的Makefile但没有运气的自定义Builder schell脚本.
谢谢你的帮助!
我们正在使用ARM9/RTOS系统制作实验室仪器.客户询问了如何从ARM9系统打印简单报告.在这种情况下,我们在RTOS中支持USB Host.我正在考虑在通用PCL中打印位图,希望能覆盖最广泛的打印机.有没有更好的方法来解决这个问题?我假设RTOS没有打印机驱动程序,我不想支持很多打印机.
我们还在我们的系统上支持USB设备模式,因此您可以插入照片打印机,我们的设备似乎是USB记忆棒.这样可行,但有点笨重.这将是一个C/C++嵌入式系统
所以现在我明白我得到一个ARM数据中止异常 - 我看到如何捕获异常本身(STL库中的错误地址),但我想在异常之前向后移回堆栈帧.我正在使用IAR工具链,它告诉我在异常后调用堆栈不可用 - 是否有一种技巧方法可以说服工具向我显示调用堆栈?感谢您的所有快速帮助!
以下两个声明之间的区别是什么?我认为它们是等价的,但第一个样本有效,第二个没有.我的意思是它编译并运行,但位图显示代码显示为空白.我还没有介入它,但我错过了一些明显的东西吗?GUI_BITMAP是一个描述位图的简单结构.这适用于VC++ 2005,但我认为它在VC++ 2008中也失败了.抓住这个......
样本1:
extern "C" const GUI_BITMAP bmkeyA_cap_active;
extern "C" const GUI_BITMAP bmkeyA_cap_inactive;
Run Code Online (Sandbox Code Playgroud)
样本2:
extern "C"
{
const GUI_BITMAP bmkeyA_cap_active;
const GUI_BITMAP bmkeyA_cap_inactive;
};
Run Code Online (Sandbox Code Playgroud)
编辑:更多的探索表明第二个例子是创建结构,而第一个例子是指外部结构.第二个示例无法链接,因为全局范围内有两个具有相同名称的变量.但事实并非如此,它会向放弃的显示代码发送零填充结构.嗯.....
编辑2:通过另一个编译器(IAR)运行相同的代码实际上无法在示例2上编译,但错误的是缺少默认构造函数.所以我猜测有一些关于"extern"关键字,结构和C++的细微之处,我没有得到.如果外部区域的东西是功能,那么两个样本是否相同?
所以我正在寻找这样的模式:
大小=值为 '0x0'
在日志文件中 - 但我只对大尺寸(4位或更多)感兴趣.以下正则表达式在EditPadPro(漂亮工具BTW)中运行良好
大小='0X [0-9A-FA-F] {4,}
但同样的正则表达式在awk中不起作用 - 似乎重复{4,}正在弄乱它.与WinGrep相同 - 来自正则表达式大师的任何想法?谢谢!
所以我在arm9系统上遇到了"预取中止"异常.这个系统没有MMU,所以无论如何这可能是一个软件问题?所有的寄存器对我来说都是正确的,从JTAG的角度看代码看起来是正确的(没有损坏).
现在我认为这是某种硬件问题(虽然我不想这么说 - 硬件一直很好,直到现在).
我有一个运行RTOS,IAR工具的嵌入式系统(ARM 9263).系统支持标准的time()函数,它给出了当前时间.我需要反向调用,即我需要设置时间 - 是否有"C"标准方法来执行此操作?我用谷歌搜索过,肯定认为这很明显,但也许它取决于平台?我不知道为什么,因为时间()不是 - 任何想法?谢谢!
我正在尝试在 Linux 上使用 qemu 构建 Python。Python 2.7 运行良好,没有问题,标准构建过程。Python 3.6,同样的构建过程抛出这样的错误:
./Programs/_freeze_importlib \
./Lib/importlib/_bootstrap.py Python/importlib.h
Fatal Python error: failed to get random numbers to initialize Python
Run Code Online (Sandbox Code Playgroud)
所以我想这是因为 qemu 没有 /dev/random 或 /dev/urandom?所以要么我想出如何向 qemu 添加随机数,要么说服 Python 3.6 不需要它?
编辑:我正在尝试使用 PYTHONHASHSEED 来解决这个问题,但据我所知它没有效果 - 我可以设置疯狂的值,如 PYTHONHASHSEED=Jeff (这应该会产生不同的错误),但没有区别。所以现在我在想它是我不理解的 qemu 和环境变量。