AOSP repo同步时间过长
我试图从同名书中学习嵌入的android.作者建议与AOSP姜饼分支合作.所以我跟随下载来源: $ repo init -u https://android.googlesource.com/platform/manifest.git -b gingerbread $ repo sync 但是花了太长时间.同样从输出来看,在我看来,它也在从其他分支中下载源代码(我看到Android-5 .....),这不是我想要的.我想知道这是否是需要这么长时间的原因. 有人有同样的问题吗?请给我一个建议!谢谢! 解决方案 aosp 是 多gabyte下载,因此您无能为力.但是,将-c/--current-branch选项传递到repo sync使repo告诉git仅获取您真正需要的分支,而不是每个存储库的所有分支.凭借像姜饼这样的旧版本,从理论上讲,这应该是相当有益的.但是,用它通过HTTP下载的GIT捆绑包的存储库回购种子,并且捆绑文件不受-c选项的影响.使用--no-cl
0 2024-02-18
编程技术问答社区
如何解决 "章节类型冲突 "的编译错误以及在gcc中使用章节属性的最佳做法
我正在使用Android NDKR8,并通过扩展GCC来编译一些库代码,这些代码在包括某些嵌入式的多个平台上共享.该代码使用段将一堆元素放入连续的内存空间中.该编译正在生成"错误:variable_name会导致截面类型冲突". 我们使用宏来声明段属性: # define DB_SEGMENT __attribute__ ((__section__ ("DBSegment"))) 上述变量_name的声明如下: dbStruct const variable_name[] DB_SEGMENT = { {conststringvalue0, sizeof(conststringvalue0)}, …more like this }; dbsstruct是 typedef struct dbStruct { const char * const address; const UINT16 stringSize;
2 2024-02-17
编程技术问答社区
在Android NDK中使用-fsigned-char构建是否安全?
为了与其他平台保持一致,我需要在我正在处理的某些本机代码中使用signed char.但是默认情况下,Android NDK char类型为unsigned. 我试图明确使用signed char类型,但是当涉及字符串常数/库功能时,它会生成太多警告differ in signedness,因此我希望使用-fsigned-char 构建代码. 我现在正在尝试预见有关Android Arm abi和api 当使用-fsigned-char时,我还找不到任何问题. in ,7.1.1算术类型和 c abi for Arm架构,5.6 inttypes.h,char被称为unsigned. 您是否知道使用C库(在Android NDK中启用-fsigned-char)时使用C库时是否会有麻烦? 解决方案 我今晚也遇到了这个问题. char在x86上被视为signed,但在Android设备上运行时更改为unsigned.这使我的jni libs无法正常工作.
2 2024-02-17
编程技术问答社区
从HDMI IN端口捕捉音频帧
我有一个扎根的HESENSE googletv,它具有HDMI进出端口. 我想做的是从HDMI中记录大约10秒的音频(从设定框).我是新手,所以请忍受我. 这有可能在根系的设备上执行此操作吗? HDMI数据是否在HDMI进入并通过HDMI将其淘汰之前重新加密后,是否被解密(由于HDCP)? . 如果我要在常规Linux盒上捕获音频帧,我该如何处理?我应该研究哪些组件?我找不到任何描述低级体系结构的文档,以及有关信号中HDMI如何路由到HDMI的详细信息. 您能否指出实际从HDMI到OUT进行路由的Android框架代码?基本上,想了解从HDMI到OUT传输期间音频信号发生的事情的流程. 我不确定我的问题是否有意义,但我希望您可以给我一些关于我应该从哪里开始的指示. 解决方案 简短答案:不可能.通过可信赖的视频路径Socs完全隔离了通行证.您需要成为认证的SOC提供商,才能在信号附近到达任何地方. 其他解决方案 HDMI输入设备应 被识
0 2024-02-11
编程技术问答社区
通过BLE中的ESP32中的音频文件共享
我想通过蓝牙从我的手机(Android)发送音频文件(音乐).首先,该文件应保存在SD(内存)卡中,然后将相同的文件(信号)保存到I2S放大器(扬声器).有人知道我如何使用ESP32接收文件并将其保存到SD(内存)卡中? (是否可以通过ESP32中的蓝牙发送音频文件并将其存储在SD卡中,并将相同的信号发送给放大器(适用于扬声器)) ) 最好的问候PM030 解决方案 BLE并不是真正用于大型文件传输,因为其最大数据包大小的限制.因此,要发送大文件,您将需要在另一端进行良好的库,这可以将一个大文件的所有小部分拼凑在一起. 话虽如此,有些人像这样发送了图像文件.您可能需要检查一下:这是可能对您有用的相关github代码: https://github.com/frankcohen/reflectionsoss/blob/main/gateway/esp32filetransfer/esp32filetransfer.ino 上述项目的相关作者甚至给了他自己的
0 2024-02-09
编程技术问答社区
识别安卓系统中的DTMF音调
i M计划在Android中创建一个Centrex系统应用.其中有一个语音邮件将在接收器侧设置.通过语音邮件中的说明,呼叫者必须按拨号板中的号码,接收器侧应标识数字并执行相应的操作.有人知道如何检测接收器侧呼叫者按下的号码吗? 它背后的技术是什么? 在Android中可能吗? 任何帮助都将是可观的. 解决方案 有人知道如何检测接收器侧呼叫者按下的号码吗? 您需要DTMF检测器/解码器.这是一个相当好的研究主题,您可以用Google进行谷歌搜索.不完美的实现很容易执行(例如,8个Goertzel过滤器),并且在大多数情况下工作.标准级质量实现要困难得多,但您并不需要这些. 它背后的技术是什么? 多音检测.这是一个有趣的探索主题.即使是现代数据传输,也可以在其基础上构建ADSL(不过,比DTMF更先进).但是,出于您的目的,一个简单的"过滤库"应该做. 在Android中可以吗? 当然,您只需要获取音频数据(示例)并将其提供给检测器即可.您如何
2 2024-02-05
编程技术问答社区
Tegra 3设备上的OpenGL扩展
我想知道新的Tegra 3设备上有哪些新的OpenGL ES扩展名?任何人都在乎发布其设备名称,OpenGL版本和扩展名列表(请仅TEGRA 3设备)?我认为其他开发人员也可以使用它. 在Android上,您可以做: String oglVersion = GLES20.glGetString(GLES20.GL_VERSION); String deviceName = GLES20.glGetString(GLES20.GL_RENDERER); String extensions = GLES20.glGetString(GLES20.GL_EXTENSIONS); 另外,GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS的值是否有真正的可能性? 解决方案 Asus Eee Pad Transformer Prime TF201 扩展: GL_NV_platform_binary GL_OES_rgb8_rgba8 GL_OES_
4 2024-02-01
编程技术问答社区
如何制作一个只有一个应用程序的嵌入式Android操作系统?
我想使用使用Android分发但没有其发射器的设备来建立自己的嵌入式系统. 或 我想启动Android,并在顶部启动了我的应用程序,并拒绝关闭它并关闭Android. 解决方案 本质上,您正在尝试对AOSP进行自定义构建,其中"家庭"是您的应用程序.如果您查看/packages/apps/launcher2 ,您将找到默认主屏幕的代码. 如果您在其中查看 androidmanifest.xml 文件,您会看到类似的东西:
0 2024-01-30
编程技术问答社区
在安卓中使用串口RS-232?
我想使用Android设备上的Javacomm API类通过串行端口发送信号,这就是我的想象: 1- Android设备将是:具有Android 2.2和USB主机模式的Archos 3.2. 2-与我的Android应用程序一起包含RXTX LIB软件包.并使用Android NDK包括RXTX本机代码. 3-一条短电缆,即USB->串行. 您能向我解释一下我可能会遇到问题的地方吗? 解决方案 我只是将Javacomm(GNU RXTX)库移植到Android.这是链接 http://v-lad.org/projects/gnu.io. android/ 您仍然可能需要重建内核,并可能为您的环境重新编译共享库.但这应该让您开始. 其他解决方案 如上所述,您需要为任何USB 串行设备提供设备驱动程序.这些设备中有许多使用多产的PL2303芯片: showdr.php?id = 175 库存Linux内核具有支持,并且已经有很长时间
2 2024-01-28
编程技术问答社区
配置SourceTrail以接受带有@语法的嵌入式c/c++头文件
我正在尝试使用sourcetrail(导入硬件包括文件时会出现错误,该文件使用异国情调的方法来定义位可寻址硬件寄存器的硬件地址,例如以下来自pic18f26k22.h的下面的. typedef union { struct { unsigned ANSA0 :1; unsigned ANSA1 :1; unsigned ANSA2 :1; unsigned ANSA3 :1; unsigned :1; unsigned ANSA5 :1; }; } ANSELAbits_t; extern volatile ANSELAbits_t ANSELAbits @
4 2024-01-26
编程技术问答社区
固定分配std::vector
我是嵌入式软件开发人员,因此我不能总是使用所有不错的C ++功能.最困难的事情之一是避免动态内存分配,因为所有STL容器在某种程度上都具有普遍性. 使用变量数据集时,std::vector非常有用.但是问题在于,在初始化或固定时,分配(例如std::reserve>)未完成.这意味着在发生副本时可能会发生内存碎片. 让每个向量具有分配的内存空间,即该向量可以生长的最大大小.这将创建确定性行为,并可以在编译时间绘制微控制器的内存使用情况.呼叫push_back当向量达到最大大小时会创建std::bad_alloc. 我已经读到可以编写std::allocator的替代版本来创建新的分配行为.是否可以使用std::allocator创建这种行为,或者替代解决方案会更适合? 我真的很想继续使用STL库并对其进行修改,而不是重新创建自己的向量,因为我比他们的实施更有可能犯错. sidenote#1: 我不能使用std::array AS 1:我的编译器没有提供
4 2024-01-24
编程技术问答社区
不对齐的内存访问
我正在使用不支持未对齐的内存访问的嵌入式设备. 对于视频解码器,我必须在8x8像素块中处理像素(每个像素一个字节).该设备具有一些SIMD处理功能,使我可以并行处理4个字节. 问题是,不保证8x8像素块从对齐地址开始,并且功能最多需要读取/写入这些8x8块中的三个. 如果您想要很好的表现,您将如何处理?经过一番思考,我想到了以下三个想法: 将所有内存访问作为字节.这是最简单的方法,但速度很慢,并且与Simd Capabilites无法正常工作(这是我目前在参考C代码中所做的). 编写四个复制功能(每种对齐情况一个),通过两个32位读取加载像素数据,将位移至正确的位置,然后将数据写入一些对齐的划痕内存.然后,视频处理功能可以使用32位访问和SIMD.缺点:CPU将没有机会隐藏处理后面的内存延迟. 与上述相同的想法,但没有编写像素来刮擦内存,进行视频处理.这可能是最快的方法,但是我必须为此方法编写的功能数量很高(我猜大约是60个). btw:我将不得
10 2024-01-24
编程技术问答社区
如何使用定点算术查找正弦查找表(LUT)中的偏移量
我正在生成一个将0-2PI分为512个片段的LUT,然后找到这些值的正弦并将它们存储为Q1.31值. 示例: LUT[0] = 0 LUT[1] = sin((1/512) * 2*PI) * (2^31) .. .. LUT[511] = sin((511/512) * 2*PI) * (2^31) 我的输入也是Q1.31格式的值. 我的问题是,当我获得随机值作为输入以找出正弦值 时,我该如何使用LUT,即在表中找到偏移值的算法是什么. 示例: int sample_input = 0.125 * (2^31) //0.125radians in Q31 format = 268435456 解决方案 请注意,0.125radians * (2^31)方法不适用于角度> 1雷达.可能,您想标准化角度 (0.125radians/2Pi) * (2^31) 无论如何,您需要将2^31范围映射到2^9-因此,只需除以2^22即可. 示例:
44 2024-01-23
编程技术问答社区
优化2D游戏中的游戏对象位置
我正在克隆一个cent游戏,但是现在我在PC上写它. 我想以随机的位置将蘑菇散布在屏幕上,但它们不应该彼此重叠. 最糟糕的情况是O(n^3)算法,您可以在其中检查彼此的蘑菇,然后检查距离或交叉点,然后采取另一个最佳的随机位置. 伪代码正在使用ActionScript: for (var i:int = 0; i
2 2024-01-23
编程技术问答社区
嵌入式系统中最快的C语言数组查询算法?
假设我有一个恒定的浮子,这些浮子的尺寸为22,看起来像这样: array[0]= 0; array[1]= 0.5; array[2]= 0.7; array[3]= 1.8; ... ... array[21]= 4.2; 此数组的值是单调的,这是,它们总是随索引(array [0] ,我想要一个给定浮子的函数,它找到了数组的索引,该数组的值紧接在输入float下方(因此,下一个索引的值紧接在上方) ) 例如,在上一种情况下,如果函数的输入为值0.68,则该函数的输出应为1,因为数组[1] 现在,这很容易实现,但是我正在处理嵌入式系统中代码的非常关键的部分,而且我确实需要一种非常优化的算法,以避免循环(以避免开销). 我现在使用的最简单的方法只是用if-esses展开循环,仅此而已. 示例: if(input >= array[size-1]) return size-1; else if(input>= array[size-2])
2 2024-01-23
编程技术问答社区
用于嵌入式的轻量级(去)压缩算法
我有一个具有图形用户界面的低资源嵌入式系统.该界面需要字体数据.为了保存仅读取内存(flash),需要压缩字体数据.我正在为此目的寻找一种算法. 要压缩数据的属性 矩形像素图的透明数据,每个像素8位 字体中通常有大约200..300字形(以某些尺寸采样字体) 每个字形通常从6x9到15x20像素 有很多零("无墨水")和稍微少的255("完全墨水"),否则八位字的分布甚至是由于抗偏见的性质 压缩算法的要求 减压算法的重要指标是数据的大小以及算法的大小(因为它们将位于相同的有限内存中). 很少有RAM可用于减压;可以将单个字形的数据解压缩到RAM中,但不多. 要使事情变得更加困难,算法必须在32位的微控制器(ARM Cortex-M Core)上非常快,因为在将它们吸引到显示屏上时需要对其进行解压缩.每个八位列还可以的十或二十个机器循环,一百个肯定太多了. 为了使事情变得更容易,完整的数据语料库是先验的,并且在压缩阶段有很多处理能力和内存. 结论和
2 2024-01-23
编程技术问答社区
Arduino: 在EEPROM中存储数据的轻量级压缩算法
我想用 atmega168 / atmega328 MicroController,但不幸的是,只有256 kb/512 kb的Eeprom储存. 我的想法是利用压缩算法降低大小.但是,我对压缩算法的了解很低,我对现成的库的搜索失败了. 那么,是否有一种优化存储大小的好方法? 解决方案 您可能会看看 lzo algorithm轻巧.我不知道AVR系统是否有任何实现,但这可能是您可以实施的. 您可能会误解芯片上EEPROM中可用的存储量;根据数据表,我的EEPROM尺寸为: atmega48p:256 atmega88p:512 Atmega168p:512 atmega256p:1024 请注意,这些值在 bytes 中,而不是您在问题中提到的KB.无论如何,这不是"粪便". 其他解决方案 AVR最多只有几千字节的EEPROM,很少有超过64K的闪光灯(没有标准的Arduinos). 如果您需要存储某些东西而很少修改,例如图像,则
4 2024-01-23
编程技术问答社区
快速CRC算法?
我想从ASCII弦中创建一个32位的数字. CRC32算法正是我要寻找的,但是我无法使用它,因为它所需的桌子太大了(这是对资源非常罕见的嵌入式系统). so:对快速而细长的CRC算法有任何建议吗?与原始CRC32相比,碰撞何时更有可能. . 解决方案 CRC实现使用表速度.他们不需要. 这是使用Castagnoli多项式(与Intel CRC32指令使用的)或以太网多项式(与Zip,Gzip等中使用的相同的). #include #include /* CRC-32C (iSCSI) polynomial in reversed bit order. */ #define POLY 0x82f63b78 /* CRC-32 (Ethernet, ZIP, etc.) polynomial in reversed bit order. */ /* #define POLY 0xedb88320 */ uint32_t c
12 2024-01-23
编程技术问答社区
希望对有限状态机的不同调度算法进行比较
是否有任何良好的资源(书籍,网站)可以很好地比较没有操作系统的嵌入式系统中有限状态机(FSM)的不同调度算法? 我正在设计一个无操作系统的简单嵌入式Web服务器.我想知道用于安排系统中发生的不同事件的各种方法是什么. 例如,如果两个事件同时到达,这些事件如何优先考虑?如果我为事件分配不同的优先级,如何确保首先处理较高的优先事件?如果在处理事件时出现了更高的优先事件,则如何确保立即处理该事件? 我计划在事件到达时使用FSM检查各种情况,然后正确安排事件进行处理.由于嵌入式Web服务器没有操作系统,因此我正在考虑使用 cycloffollow"> cycloclolow"> cycloclofforl"> cycloce Execution 接近.但是我希望看到可以在这种方法中使用的不同算法的利弊的比较. 解决方案 您说:"我的意思是,例如在类似的情况下安排condion,如果两个任务同时到达,则需要优先考虑哪个任务,并在嵌入式WebServer中进行其他情况."
0 2024-01-23
编程技术问答社区
用1MB的内存对100万个8位数的数字进行排序
我有一台具有1 MB RAM的计算机,没有其他本地存储.我必须使用它来接受TCP连接上的100万个8位小数号,然后对其进行排序,然后通过另一个TCP连接发送排序列表. 数字列表可能包含重复项,我不能丢弃.该代码将放置在ROM中,因此我无需从1 MB中减去代码的大小.我已经有代码来驱动以太网端口并处理TCP/IP连接,并且其状态数据需要2 kb,其中包括1 kb的缓冲区,代码将读取和写入数据.有解决这个问题的解决方案吗? 问答来源: slashdot.org 解决方案 仅是因为1兆字节和100万个字节之间的差异.电力8093729.5可以选择100万个8位数字并允许重复订购的不同方式,因此只有100万个字节的RAM的机器没有足够的状态来代表所有可能性.但是1M(TCP/IP的2K较少)为1022*1024*8 = 8372224位,因此可以解决方案. 第1部分,初始解决方案 这种方法需要超过1m,我将其完善以使其适合1m. 我将在0至999999
2 2024-01-22
编程技术问答社区