adi 公司的嵌入式的 demo 程序,c 语言...看了这个函数,我不相信我的眼睛 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
pigdragon
V2EX    程序员

adi 公司的嵌入式的 demo 程序,c 语言...看了这个函数,我不相信我的眼睛

  •  
  •   pigdragon 2024-06-06 16:54:37 +08:00 2623 次点击
    这是一个创建于 491 天前的主题,其中的信息可能已经有所发展或是发生改变。

    是我魔怔了吧,这个函数判断条件不是无效的么?要这个 if 干嘛?

    ** adi_initialize.c source file generated on August 10, 2018 at 10:27:14. ** ** Copyright (C) 2000-2018 Analog Devices Inc., All Rights Reserved. ** ** This file is generated automatically. You should not modify this source file, ** as your changes will be lost if this source file is re-generated. */ #include <sys/platform.h> #include "adi_initialize.h" extern int32_t adi_initpinmux(void); int32_t adi_initComponents(void) { int32_t result = 0; if (result == 0) { result = adi_initpinmux(); /* auto-generated code (order:0) */ } return result; } 
    16 条回复    2024-06-07 00:40:17 +08:00
    flytsuki
        1
    flytsuki  
       2024-06-06 17:06:24 +08:00
    有可能 if 之前有一堆代码,然后需求变更删掉了吧
    azenk
        2
    azenk  
       2024-06-06 17:10:44 +08:00 via Android
    这不是工具自动生成的代码么?不奇怪
    UIXX
        3
    UIXX  
       2024-06-06 17:13:58 +08:00
    这是一种嵌入式工程中表示默认配置的写法。

    对于不同的处理器,这个函数是根据情况来判断执不执行引脚复用初始化,比如在 A 芯片中 if 前面是有形如 result = xxx()的条件判断的,而 B 芯片则不需要。这种写法既满足格式统一,又方便插入调试语句,经常用。

    PS. 工具生成的是引脚复用初始化那部分的内容,不是这个函数。
    pigdragon
        4
    pigdragon  
    OP
       2024-06-06 17:14:51 +08:00
    工具要有模板的吧...按照尚未普及人工智能的情况,模板肯定是人出的
    pigdragon
        5
    pigdragon  
    OP
       2024-06-06 17:16:29 +08:00
    @UIXX
    学习了...
    看来有疑惑要经常问,开口有益
    Panic
        6
    Panic  
       2024-06-06 17:22:29 +08:00
    从软件层面看怎么也应该是再调用一个 result = chip_initComponents 的 chip 专用函数把, 这么写怎么看都不合理. 不过考虑到嵌入式也有全栈, 懂硬件的顺带再写个软件..
    Panic
        7
    Panic  
       2024-06-06 17:24:42 +08:00
    你这个可能是 SDK 版本太老了.
    https://github.com/analogdevicesinc/runtime-sharc-loader/blob/master/SharcBooter/project/sc589/SharcBooter_Core2/system/adi_initialize.c

    int32_t adi_initComponents(void)
    {
    int32_t result = 0;

    result = adi_sec_Init();


    return result;
    }
    rrfeng
        8
    rrfeng  
       2024-06-06 17:29:52 +08:00 via Android
    注释写了 auto generated
    也不奇怪(
    pigdragon
        10
    pigdragon  
    OP
       2024-06-06 17:34:23 +08:00
    @Panic
    基本上无所谓新旧,都有时间戳的,看你贴的链接,你贴的这个代码 2019,我贴的 2018.
    就是前面几位朋友说的,说来说去是软件生成的,通过兼容的模板.
    thorneLiu
        11
    thorneLiu  
       2024-06-06 19:01:36 +08:00 via Android
    实际跑起来编译器应该都能优化掉这个 if 吧
    CEBBCAT
        12
    CEBBCAT  
       2024-06-06 19:37:37 +08:00   1
    @pigdragon #5 比开口更有益的是主动学习。看到是自动生成的代码,去找生成它的软件,找到对应的生成逻辑,看看为什么这样设计,是不是有哪里可以优化,再去提个 PR ,岂不美哉?

    (虽然我从没提过)
    v1
        13
    v1  
       2024-06-06 20:49:36 +08:00
    编译器能优化,但是这样写在不同硬件的时候可以很方便调整对应部分(相当于预留)
    koebehshian
        14
    koebehshian  
       2024-06-06 23:25:06 +08:00
    统一格式 ,如果要调两个函数,第二个就需要 if 判断
    flax5a98aa2
        15
    flax5a98aa2  
       2024-06-07 00:15:46 +08:00
    自动生成的代码只需要保证逻辑等价效率没有折扣就行了,人手动写代码需要考虑的事情就多了
    xiri
        16
    xiri  
       2024-06-07 00:40:17 +08:00
    我做嵌入式的,一般我们的代码会有大量的宏控制、嵌套以适配不同的芯片方案和机型,如果只看某个产品机型的有效代码(删除未开启宏包裹的代码),应该能找到一堆类似这样的场景。
    主要还是为了同时满足多业务需求,让格式尽量统一、保证代码复用吧,说不定这个代码原先也是有宏控制的其他逻辑分支,只不过公开出来去除了不关注的部分。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2763 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 14:45 PVG 22:45 LAX 07:45 JFK 10:45
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86