This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Host / Controller questions



Hi there,

  • I have read that host and Controller layers could exist in separate chipsets, or they could exist in the same chipset. In the case where the host and controller are in separate chipsets, the HCI layer will be implemented over a physical communication interface (SDIO / UART / USB). In our devices, everything exist on one chip? So the host and controller are on the same chip? Why would I or a customer want to separate it for different chips?
  • Where is the SW of the host / controller is implemented? For example layers like L2CAP, ATT and so on, where are they implemented and stored? Do you have any document that I could read about these implemented layers by TI?

Many thanks.

  • Hi Eyal,

    I followed up with you via email a few minutes back. If you have any questions regarding the info in that email or any follow up questions in general, then let me know through this thread and I will respond as soon as I can. :) 

    Best Regards,

    Jan

  • Hi Jan, I will post here your answer so other ones could see as well (I also have questions below)

    Jan's answer to my first question:

    "You are correct, in our devices the host and the controller portions of the stack are usually included together. I had this same confusion as well while I was learning BLE. The host and controller portions of the stack can be configured such that they are can be directly accessed and controlled by an external device. Customers may want to do this when they have an existing device with completed firmware and want to add BLE to their functionality. If a customer already has completed product they might not want to completely migrate to our BLE device if it would require porting everything over. However, since our devices can act as network processors this means that customers can keep their current solution and with slight modifications add our device to their design in order to implement BLE.

    For example, lets say a customer has a robot vacuum that is completed and they want to implement BLE on it. If we couldn’t configure our device to act as a network processor, then they would have to replace their MCU with our BLE MCU and port the entire code over as well as add the BLE logic to the BLE MCU. This is might not be something that the customer has the time or budget to do, so they may pass on our device. Being able to externally access the BLE MCU through their existing MCU will be much easier and quicker to implement."

    Jan's answer to my first question:

    "Are you referring to where the actual code that implements the host / controller and the L2CAP fundamental logic is located? If so, then that is part of the stack. If you are referring to whether we have any network processor examples that customers can use for their application, then yes we do! The host_test project is a BLE network processor that uses TI Vendor Specific HCI commands and can be controlled externally by a separate microcontroller or a PC via a serial interface. We have a companion app that can control host_test externally on PC via a GUI called btool which is present in the SDK (SDK\tools\ble5stack\btool). There is a caveat, it is NOT possible to use an external Bluetooth Host stack, such as BlueZ with host_test. External host stacks require that the microcontroller they are connected does not implement the host element, but host_test implements some host elements and some controller elements. However, customers have still used host_test as a network processor with some modifications, but that would be the responsibility of the customer."

    Thanks for your response!

    My question is:

    The host layers are implemented on the application core of the device? 

    If a customer want to use our device as a network processor, it means he won't need any change on his MCU? What kind of modification we need to do in order to make our devices function as network processor, are all devices able to function in this way?

    Also, if he wants his MCU to communicate with our network processor, what will be the interface? 

  • Hi Eyal,

    No problem. We are glad to help! Thanks for prompt reply! 

    The application is implemented on top of the GAP and GATT layers of the stack (which reside in the Host component). So the application is host and controller components. This is discussed in the Bluetooth Low Energy Protocol Stack Basics section of the User's Guide.

    The customer will have to some modifications to the MCU as well as the PCB, but these modifications are smaller in scale than having to completely replace their MCU with ours. The customer would have to connect the MCUs in the PCB via a communication protocol and they would have to make code modifications on their MCU. They would have to use the TI Vendor Specific HCI commands in order to tell our BLE MCU what do to from their device.

    The customer can use UART or SPI to perform the communication. More information on this is contained within the host_test project as well as the Network Processor Interface (NPI) section of the user's guide.

    Let me know if this response contains the information you are looking for or if you have any additional questions. :) 

    Best Regards,

    Jan

  • Hi Jan,

    Where physically the stack sits? When using the cc1352 for example, where in the memory the stack is located? I don't undersatnd.

    When using our devices, we have a dedicated application core (for instance M4/M3) and another cortex M0 for the radio. If a customer uses our device, he should take into account that some of the application core is dedicated for our BLE stack? 

  • Hi Eyal,

    I apologize for the confusion. To understand where the application and the stack sit in the memory, then I would recommend looking into the Memory Map section of the User's Guide. To get a much more detailed breakdown of a specific application, then you must build the application and locate the generated .map file in the project. The .map file contains the complete memory map of the built application.

    When using our BLE devices the stack takes care of all the radio core and the application core processes. The user can expect the application as well as the necessary stack processes to reside on the device. This is also somewhat covered in the Memory Map section linked above.

    I would recommend looking into the BLE5-Stack chapter of the User's Guide as well as the Memory Overview chapter.

    Best Regards,

    Jan

  • Thanks Jan