openMPM源码分析(七)

本文详细解析了DSP镜像装载程序的工作原理,包括参数验证、路径转换、消息交互及错误处理等内容。通过深入分析源码文件mpmcmdif.c中的mpm_load函数,帮助读者理解DSP镜像装载的具体步骤。
用来装载DSP的镜像的主程序在:src/clien/mpmcmdif.c中,对应的/bin/mpmcl的源码。下面开始分析。
一、参数个数和内容的分析。
     1.通过argc的值和!strcmp(argv[x],"CMD");来进行判断(当模式串匹配时strcmp返回为0,故在if条件判断中要使用 !strcmp() )。
     2.具体参数的内容在函数void print_help(char * progname);中体现。
 
二、装载DSP镜像函数 mpm_load();
     1.函数原型:int mpm_load(const char* slave_name,const char *file_name,int * error_code)
     根据注释:此处的file那么就是DSP image。
     2.函数内容:抛开变量先不看,又是一连串7个if语句,他们做的事情如下:
          a.判断slave_name和file_name是否为空。
          b.slave_name的长度不得超过最大长度32(MPM_MAX_NAME_LENGTH)
          c.char *realpath(const char*path,char*resolved_path)将path所指的相对路径转换为绝对路径存储在resolved_path所指的数组或指针中。
          d.msg_alloc(c2s,strlen(resolved_path)+1);为c2s指针分配并初始化一个(sizeof(c2s)+strlen(resolved_path))长度的空间,令c2s->length=strlen(resolved_path)
          注:c2s指针和s2c指针分别指向client_to_server_msg_t和server_to_client_msg_t结构体。
          对c2s指针初始化:
                    1.由于是mpm_load()函数,所以c2s->cmd=mpm_cmd_load;
                    2.初始化c2s->slave_name
                    3.初始化c2s->length

          e.函数:int send_n_recv_msg(char* send_data, int send_data_length, char** recv_data, int * recv_data_length);
               函数内部做了两层封装,底层是用socket实现,而该函数完成了发送和接收两个功能。其实就是对s2c和c2s这两个指针的内容进行交互。

          f.经过上步s2c指针指向内容的成员变量经过了初始化,对s2c指针及其内容进行判断(指针是否为空等)。
          g.根据s2c指针所指向的内容获取相关的信息(error信息,length信息)

     3.close_n_exit:释放临时指针。
                    


先展示下效果 https://pan.quark.cn/s/a4b39357ea24 遗传算法 - 简书 遗传算法的理论是根据达尔文进化论而设计出来的算法: 人类是朝着好的方向(最优解)进化,进化过程中,会自动选择优良基因,淘汰劣等基因。 遗传算法(英语:genetic algorithm (GA) )是计算数学中用于解决最佳化的搜索算法,是进化算法的一种。 进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择、杂交等。 搜索算法的共同特征为: 首先组成一组候选解 依据某些适应性条件测算这些候选解的适应度 根据适应度保留某些候选解,放弃其他候选解 对保留的候选解进行某些操作,生成新的候选解 遗传算法流程 遗传算法的一般步骤 my_fitness函数 评估每条染色体所对应个体的适应度 升序排列适应度评估值,选出 前 parent_number 个 个体作为 待选 parent 种群(适应度函数的值越小越好) 从 待选 parent 种群 中随机选择 2 个个体作为父方和母方。 抽取父母双方的染色体,进行交叉,产生 2 个子代。 (交叉概率) 对子代(parent + 生成的 child)的染色体进行变异。 (变异概率) 重复3,4,5步骤,直到新种群(parentnumber + childnumber)的产生。 循环以上步骤直至找到满意的解。 名词解释 交叉概率:两个个体进行交配的概率。 例如,交配概率为0.8,则80%的“夫妻”会生育后代。 变异概率:所有的基因中发生变异的占总体的比例。 GA函数 适应度函数 适应度函数由解决的问题决定。 举一个平方和的例子。 简单的平方和问题 求函数的最小值,其中每个变量的取值区间都是 [-1, ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值