小编Ahm*_*leh的帖子

优化ARM Cortex M3代码

我有一个C函数,它试图将帧缓冲区复制到FSMC RAM.

这些函数将游戏循环的帧速率降低到10FPS.我想知道如何分析反汇编函数,我应该计算每个指令周期吗?我想知道CPU在哪里花费时间,在哪一部分.我确定算法也是一个问题,因为它的O(N ^ 2)

C函数是:

void LCD_Flip()
{

    u8  i,j;


    LCD_SetCursor(0x00, 0x0000);
    LCD_WriteRegister(0x0050,0x00);//GRAM horizontal start position
    LCD_WriteRegister(0x0051,239);//GRAM horizontal end position
    LCD_WriteRegister(0x0052,0);//Vertical GRAM Start position
    LCD_WriteRegister(0x0053,319);//Vertical GRAM end position
    LCD_WriteIndex(0x0022);

    for(j=0;j<fbHeight;j++)
    {
        for(i=0;i<240;i++)
        {
            u16 color = frameBuffer[i+j*fbWidth];
            LCD_WriteData(color);

        }
    }

}
Run Code Online (Sandbox Code Playgroud)

拆卸功能:

08000fd0 <LCD_Flip>:
 8000fd0:   b580        push    {r7, lr}
 8000fd2:   b082        sub sp, #8
 8000fd4:   af00        add r7, sp, #0
 8000fd6:   2000        movs    r0, #0
 8000fd8:   2100        movs    r1, #0
 8000fda:   f7ff fde9   bl  8000bb0 <LCD_SetCursor>
 8000fde:   2050        movs …
Run Code Online (Sandbox Code Playgroud)

optimization assembly arm stm32 disassembly

2
推荐指数
1
解决办法
1876
查看次数

从点云中检测一组平面

我有一套点云,我想测试3D房间是否有角落.所以我想讨论我的方法,如果在速度方面有更好的方法,因为我想在手机上测试它.

我将尝试使用hough tranform来检测线条,然后我将尝试查看是否有三条相交的线条,它们也构成了一条相交的两个平面.

c++ image-processing computer-vision point-clouds

2
推荐指数
1
解决办法
6951
查看次数

解释ARM霓虹图像采样

我正在尝试编写一个更好的版本的OpenCV的cv :: resize(),我来了一个代码在这里:https://github.com/rmaz/NEON-Image-Downscaling/blob/master /ImageResize/BDPViewController.m 该代码用于将图像下采样2但我无法获得算法.我想首先将该算法转换为C然后尝试修改它以用于学习目的.是否也可以将其转换为任何尺寸的缩减示例?

功能是:

static void inline resizeRow(uint32_t *dst, uint32_t *src, uint32_t pixelsPerRow)
{
    const uint32_t * rowB = src + pixelsPerRow;

    // force the number of pixels per row to a multiple of 8
    pixelsPerRow = 8 * (pixelsPerRow / 8);

    __asm__ volatile("Lresizeloop: \n" // start loop
                     "vld1.32 {d0-d3}, [%1]! \n" // load 8 pixels from the top row
                     "vld1.32 {d4-d7}, [%2]! \n" // load 8 pixels from the bottom row
                     "vhadd.u8 q0, q0, …
Run Code Online (Sandbox Code Playgroud)

c++ opencv arm computer-vision neon

0
推荐指数
1
解决办法
1552
查看次数

给定一个单链表,将所有奇数节点组合在一起,然后是偶数节点

我遇到了这个问题:

给定一个单链表,将所有奇数节点组合在一起,然后是偶数节点。请注意,这里我们谈论的是节点号,而不是节点中的值。

您应该尝试就地进行。该程序应在O(1)空间复杂度和O(节点)时间复杂度下运行。

例:

Given 1->2->3->4->5->NULL,
return 1->3->5->2->4->NULL.
Run Code Online (Sandbox Code Playgroud)

我已经看到了解决方案,但是我不明白,我需要有人直观地解释问题的解决方案。

这是一个解决方案,但使用Java。我无法想象指针操作,有人可以为我画些什么吗?

public ListNode oddEvenList(ListNode head) {
        if(head == null || head.next == null)
            return head;
        ListNode odd = head;
        ListNode even = head.next;
        ListNode evenHead = even;
        while(odd.next != null && even.next != null){
            odd.next = even.next;
            odd = odd.next;
            even.next = odd.next;
            even = even.next;
        }
        odd.next = evenHead;
        return head;
    }
Run Code Online (Sandbox Code Playgroud)

c++ java algorithm linked-list

-2
推荐指数
1
解决办法
1440
查看次数