小编arg*_*rge的帖子

git-subtree:从克隆的repo中推送更改

我正在使用git-subtree(来自Avery Pennarun).在我目前的git repo中,我当然拥有所有项目文件/文件夹和一个名为"lib"的子树.如果我现在克隆这个git repo使用git clone我得到所有的项目文件和子树"lib"(一切都应该是).我现在尝试了:我在克隆的repo中的子树"lib"中更改了一些东西并试图将更改推回到子树"lib"的远程仓库中 git subtree push,但是它没有用.问题是什么?我是否必须首先使用git子树添加将其添加为子树?

Thx提前

git git-subtree

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

写入flash页面时powerfail序列的死锁

我目前正在开发一个使用ARM Cortex M3微控制器和FreeRTOS作为系统操作系统的嵌入式项目.代码是由一位前同事编写的,遗憾的是该项目有一些奇怪的错误,我必须尽快找到并修复.

简短说明:该设备集成到车辆中,并使用集成调制解调器向远程服务器发送一些"特殊"数据.

主要问题:由于设备集成在车辆中,设备的电源可能随时丢失.因此,设备将"特殊"数据的某些部分存储到两个保留的闪存页面.此代码模块在两个闪存页面上作为eeprom仿真进行布局(用于从一个闪存页面到另一个闪存页面的耗损均衡和数据传输).eeprom仿真与所谓的"虚拟地址"一起使用,您可以在其中将任意大小的数据块写入当前活动/有效的闪存页面,并使用这些虚拟地址将其读回.前同事将eeprom仿真实现为多任务模块,您可以从应用程序中的每个任务读取/写入闪存页面.乍一看,一切似乎都很好.

但是我的项目经理告诉我,设备总是会丢失一些"特殊"数据,车辆中的电源电压下降到几伏,设备会尝试将数据保存到闪存中.通常电源大约为10-18伏,但如果电压降至7伏以下,则设备会收到一个被调用的中断powerwarn,并触发一个叫做的任务powerfail task.它powerfail task具有所有任务的最高优先级,并执行一些回调,例如调制解调器关闭,以及"特殊"数据存储在闪存页面中.我试着理解代码并调试了几天/几周,现在我很确定我发现了问题:

在powerfail任务执行的那些回调(称为powerfail回调)中,有RTOS调用,其他任务被暂停.但不幸的是,那些被填充的任务也可能EEPROM_WriteBlock()在接收到电源警告中断之前有一个未完成的呼叫.因此,powerfail任务执行回调,并且在其中一个回调中有一个EE_WriteBlock()调用,其中任务无法接受互斥锁,EE_WriteBlock()因为另一个任务(已暂停)已经采取了 - >死锁!

这是将数据写入闪存的例程:

uint16_t
EE_WriteBlock (EE_TypeDef *EE, uint16_t VirtAddress, const void *Data, uint16_t Size)
{
     .
     .
     xSemaphoreTakeRecursive(EE->rw_mutex, portMAX_DELAY);
     /* Write the variable virtual address and value in the EEPROM */
     .
     .
     .
     xSemaphoreGiveRecursive(EE->rw_mutex);
     return Status;
}
Run Code Online (Sandbox Code Playgroud)

当调用'xSemaphoreTakeRecursive()'时,这是RTOS特定的代码:

portBASE_TYPE xQueueTakeMutexRecursive( xQueueHandle pxMutex, portTickType xBlockTime )
{
    portBASE_TYPE xReturn;

    /* Comments regarding mutual exclusion as per those …
Run Code Online (Sandbox Code Playgroud)

c embedded rtos freertos

6
推荐指数
1
解决办法
252
查看次数

dijit.byId不工作(不是函数?)

这是我简单的dojo示例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.9.2/dijit/themes/dijit.css">
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.9.2/dijit/themes/claro/claro.css">
<title>ShowMovies </title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript" data-dojo-config="isDebug: false, async: true, parseOnLoad: true" src="http://ajax.googleapis.com/ajax/libs/dojo/1.9.2/dojo.js"></script>
<script type="text/javascript">
    require(
    [ "dojo", "dojo/parser", "dijit/layout/BorderContainer",
            "dijit/layout/ContentPane", "dojox/grid/DataGrid",
            "dojo/data/ItemFileReadStore" ],
    function(dojo) {
        dojo.ready(function() {
            dojo.xhrGet( {
                url : "MovieList.json",
                handleAs : "json",
                load : function(response, ioArgs) {
                    var newData = {
                        identifier: "title",
                        items: response.result
                    };
                    var dataStore = new dojo.data.ItemFileReadStore({data: newData, id:"dataStoreId"});
                    var grid = …
Run Code Online (Sandbox Code Playgroud)

javascript ajax dojo

5
推荐指数
1
解决办法
4394
查看次数

strncmp在解析器函数中失败

我在parse()函数中找不到问题.简介:我从终端程序发送"boot\r \n",调用parse()函数,strncmp(缓冲区,"boot",4)永远不会进入if分支?此刻,我看不到树木的木材.之后,从parse()函数返回的字符串将被提供给remove_cr_lf_chars()函数.我需要删除这些字符才能将字符串与图像名称进行比较,当然这些字符没有任何'\ r'或'\n'字符.

static char *parse(void)
{
    static char buffer[100];
    char *p = buffer;
    char c;

    do {
        while (!(USART1->SR & USART_FLAG_RXNE));
        *p++ = c = ((char)USART1->DR);
    } while (c != '\r' && p-buffer < sizeof buffer-1);
    *p = '\0';

    if (strncmp(buffer, "boot", 4))
    {
        p = buffer+4;
        /* skip to argument, p might point to '\0' if none */
        while (*p != '\0' && (*p == ' ' || *p == '\r')) p++;
            return p;
    }
    return NULL;
} …
Run Code Online (Sandbox Code Playgroud)

c embedded

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

标签 统计

c ×2

embedded ×2

ajax ×1

dojo ×1

freertos ×1

git ×1

git-subtree ×1

javascript ×1

rtos ×1