首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    关于FEC驱动_FEC伍丰

    说是网络,其实是网卡驱动。而且是针对于FREESCALE芯片的FEC端的驱动,我不知道别的芯片厂商的FEC模块是怎么样的, 但就我接触过的几款FREESCALE的芯片来看,比如基于POWERPC的860T和ARM系列的MX27等,他们的FEC有一个明显的特点就是 都是由BD和一个DMA缓冲组成,而这个DMA是专用的,也就是只是给FEC使用,区别于芯片内的DMAC模块。我们先来从fec.c这 个与硬件直接相关的看起: 首先找到module_init(fec_enet_module_init);这里fec_enet_module_init为入口点 fec_enet_module_init() 首先调用fec_arch_init,它调用gpio_fec_active设置GPIO为FEC模式,然后如果有电源管理的话,就调用 mxc_fec_power_on开启电源。接着调用clk_get,clk_enable, clk_put设置FEC的CLOCK,这里退出fec_arch_init函数,接 着循环FEC_MAX_PORTS次,也就是有几个FEC就循环几次,在这里我们只有一个FEC,所以这个循环不用管。接下来因为我们 用的是以太网,所以调用dev = alloc_etherdev(sizeof(struct fec_enet_private));申请一个以太网设备描述,其中 struct fec_enet_private是用来描述FEC专有的数据结构。如下: /* The FEC buffer descriptors track the ring buffers. The rx_bd_base and * tx_bd_base always point to the base of the buffer descriptors. The * cur_rx and cur_tx point to the currently available buffer. * The dirty_tx tracks the current buffer that is being sent by the * controller. The cur_tx and dirty_tx are equal under both completely * empty and completely full conditions. The empty/ready indicator in * the buffer descriptor determines the actual condition. */ struct fec_enet_private { /* Hardware registers of the FEC device */ volatile fec_t *hwp; /* The saved address of a sent-in-place packet/buffer, for skfree(). */ unsigned char *tx_bounce[TX_RING_SIZE]; struct sk_buff* tx_skbuff[TX_RING_SIZE]; struct sk_buff* rx_skbuff[RX_RING_SIZE]; ushort skb_cur; ushort skb_dirty; /* CPM dual port RAM relative addresses. */ void * cbd_mem_base; /* save the virtual base address of rx&tx buffer descripter */ cbd_t *rx_bd_base; /* Address of Rx and Tx buffers. */ cbd_t *tx_bd_base; cbd_t *cur_rx, *cur_tx; /* The next free ring entry */ cbd_t *dirty_tx; /* The ring entries to be free()ed. */ struct net_device_stats stats; uint tx_full; spinlock_t lock; uint phy_id; uint phy_id_done; uint phy_status; uint phy_speed; phy_info_t const *p

    01

    Install Jumpserver48

    TaskPool: Apply <function _fast_trace_task at0x7faa22f8aea0> (args:('assets.tasks.test_system_user_connectability_period', 'ce3795ce-96e2-475f-944f-4cb9cc462cbd', {'lang': 'py', 'task': 'assets.tasks.test_system_user_connectability_period', 'id': 'ce3795ce-96e2-475f-944f-4cb9cc462cbd', 'eta': None, 'expires': None, 'group': None, 'retries': 0, 'timelimit': [None, None], 'root_id': 'ce3795ce-96e2-475f-944f-4cb9cc462cbd', 'parent_id': None, 'argsrepr': '()', 'kwargsrepr': '{}', 'origin': 'gen22572@h165', 'reply_to': '07fc10f1-4f00-3fe0-b8d1-c98b94e70bb3', 'correlation_id': 'ce3795ce-96e2-475f-944f-4cb9cc462cbd', 'delivery_info': {'exchange': '', 'routing_key': 'celery', 'priority': 0, 'redelivered': None}}, b'\x80\x02)}q\x00}q\x01(X\t\x00\x00\x00callbacksq\x02NX\x08\x00\x00\x00errbacksq\x03NX\x05\x00\x00\x00chainq\x04NX\x05\x00\x00\x00chordq\x05Nu\x87q\x06.', 'application/x-python-serialize', 'binary') kwargs:{}) Task accepted: assets.tasks.test_admin_user_connectability_period[28cbd1e8-7543-404e-b177-09d94155e31f] pid:22609 Received task: terminal.tasks.delete_terminal_status_period[10a7c66d-0877-4fda-bd24-2a9ac3a96e34] TaskPool: Apply <function _fast_trace_task at0x7faa22f8aea0> (args:('terminal.tasks.delete_terminal_status_period', '10a7c66d-0877-4fda-bd24-2a9ac3a96e34', {'lang': 'py', 'task': 'terminal.tasks.delete_terminal_status_period', 'id': '10a7c66d-0877-4fda-bd24-2a9ac3a96e34', 'eta': None, 'expires': None, 'group': None, 'retries': 0, 'timelimit': [None, None], 'root_id': '10a7c66d-0877-4fda-bd24-2a9ac3a96e34', 'parent_id': None, 'argsrepr': '()', 'kwargsrepr': '{}', 'origin': 'gen22572@h165', 'reply_to': '07fc10f1-4f00-3fe0-b8d1-c98b94e70bb3', 'correlation_id': '10a7c66d-0877-4fda-bd24-2a9ac3a96e34', 'delivery_info': {'exchange': '', 'routing_key': 'celery', 'priority': 0, 'redelivered': None}}, b'\x80\x02)}q\x00}q\x01(X\t\x00\x00\x00callbacksq\x02NX\x08\x00\x00\x00errbacksq\x03NX\x05\x00\x00\x00chainq\x04NX\x05\x00\x00\x00chordq\x05Nu\x87q\x06.', 'application/x-python-serialize', 'binary') kwargs:{}

    01

    Install Jumpserver47

    [tasks] . assets.tasks.push_system_user_to_assets . assets.tasks.push_system_user_to_assets_manual . assets.tasks.push_system_user_util . assets.tasks.set_admin_user_connectability_info . assets.tasks.set_assets_hardware_info . assets.tasks.set_system_user_connectablity_info . assets.tasks.test_admin_user_connectability_manual . assets.tasks.test_admin_user_connectability_period . assets.tasks.test_admin_user_connectability_util . assets.tasks.test_asset_connectability_manual . assets.tasks.test_asset_connectability_util . assets.tasks.test_system_user_connectability_manual . assets.tasks.test_system_user_connectability_period . assets.tasks.test_system_user_connectability_util . assets.tasks.update_asset_hardware_info_manual . assets.tasks.update_assets_hardware_info_period . assets.tasks.update_assets_hardware_info_util . celery.accumulate . celery.backend_cleanup . celery.chain . celery.chord . celery.chord_unlock . celery.chunks . celery.group . celery.map . celery.starmap . common.tasks.send_mail_async . ops.tasks.hello . ops.tasks.hello_callback . ops.tasks.run_ansible_task . terminal.tasks.clean_orphan_session . terminal.tasks.delete_terminal_status_period . users.tasks.write_login_log_async | Worker: Starting Hub ^-- substep ok | Worker: Starting Pool ^-- substep ok | Worker: Starting Consumer | Consumer: StartingConnection Connected to redis://127.0.0.1:6379/3 ^-- substep ok | Consumer: StartingEvents ^-- substep ok | Consumer: Starting Mingle mingle: searching for neighbors mingle: all alone ^-- substep ok | Consumer: Starting Tasks ^-- substep ok | Consumer: Starting Control ^-- substep ok | Consumer: Starting Gossip ^-- substep ok | Consumer: Starting Heart ^-- substep ok | Consumer: Startingevent loop | Worker: Hub.register Pool... 2018-07-2301:52:37 [signal_handler DEBUG] App ready signal recv App ready signal recv 2018-07-2301:52:37 [signal_handler DEBUG] Start need start task: [assets.tasks.update_assets_hardware_info_period, asset

    01

    以太坊win平台和Linux 私链搭建,交易,添加多节点

    先上一篇的以太坊的私有搭建,交易,节点连接,结合搭建的步骤对以太坊进行深入介绍。本文介绍的方式在win10 和ubuntu16.04 的方式测试过。 第一步:geth的安装,请直接移步:https://github.com/ethereum/go-ethereum/wiki/Building-Ethereum 或者百度其他博客。为了方便操作,windows 平台在安装完成geth后 ,最好将geth.exe 所在的目录添加到Path环境变量中以便于开发。linux 的方式推荐使用ppa的方式安装。如果不是也推荐奖geth 添加到环境变量里面。 第二步:创建创世块 先不要想太多直接复制我的创世块用: 新建一个文件夹名为mynode,然后在mynode 文件夹里面创建一个文件

    01
    领券