Wednesday 30 September 2009

Windows Embedded CE Live Chat (September)

Hi folks,

just in case you missed a very interesting Windows Embedded CE Live Chat today, you can find the transcript of today’s chat here.


msft_davbo (Moderator): We are pleased to welcome our Experts for today’s chat. I will have them introduce themselves now.
Let’s begin the chat!

msft_davbo (Moderator): Prince - this is a tech chat for Windows Embedded

Damon Barry [MS] (Expert): Hello, I'm Damon Barry from the Multimedia team.

masatos_MSFT (Expert): Hi, I'm Masato Sudo from the Applications team

FBLANQ_MSFT (Expert): Hello, I'm Francisco Blanquicet from the CoreOS/BSP team.

mskim_MSFT (Expert): Hello, this is Myungsub Kim from Windows CE JDP (PRT) team.

rajran[MS] (Expert): Hi, I am BSP PM in Core team.

Travis Hobrla [MS] (Expert)[18:06]: Hi, I'm Travis Hobrla, a developer on the BSP/CoreOS team.

Sue Loh [MS] (Expert)[18:06]: Hi, I'm Sue Loh, a developer on the Platform Builder remote tools team, with previous kernel & file system experience. I hope we can answer some of your questions today!

RajeevDubey[MS] (Expert)[18:06]: Hi, This is Rajeev Dubey, Windows CE Bluetooth PM

RajeevDubey[MS] (Expert)[18:17]:

Q: [5] (redoing for the experts) I think this is for Rajeev...is there anything you can say about the Bluetooth Core Specification Addendum 1 (CSA1) for Core revision 2.1? Or support of 3.0? This is needed for support of the Health Device Profile

A: Hi Len, at present, CE does not provide Health Device Profile. However, CE Bluetooth stack is extensible and an OEM can add newer profiles and associated stack extensions.

masatos_MSFT (Expert)[18:18]:

Q: [4] Which Compact Framework version is in ROM on Windows Mobile 6.5 devices?

A: Unfortunately, we cannot comment on products, like WM6.5, that has not shipped yet. Thank you for your question though and I would be happy to follow up with you next time when WM6.5 officially releases

AlexBu_MSFT (Expert)[18:18]:

Q: [3] Hello, I'm using Windows CE 5.0 and have question about application debugging with PB. Are there any limitations about the size of the PDB file? In my case, the breakpoints will be ignored in PB during the debug session.

A: Hi Harald. What is the size of your PDB file?

Sue Loh [MS] (Expert)[18:20]:

Q: [1] Hello experts, about FlashMDD. Besides the MSDN topic on MDD/PDD driver, and the sample in FMDMDDWRAPPERPDD sample, is there additional documentation that we can have access? I am having trouble to configure more than one non contiguos region in this model

A: [From Vadim Yushprakh] What do you mean by "more than one non contiguious region"? The MDD supports multiple regions, however each region represents a contigous range of blocks.

masatos_MSFT (Expert)[18:21]:

A: mkiepfer, your question is split up across several different questions. Can you please summarize and submit the question as one full question please?

Andy Haslam [MS] (Expert)[18:23]:

Q: [11] Would the Experts like to share any blogs they may write for?

A: Mike Hall from our team writes a blog: http://blogs.msdn.com/mikehall/

Sing Wee [MS] (Expert)[18:23]:

Q: [3] Hello, I'm using Windows CE 5.0 and have question about application debugging with PB. Are there any limitations about the size of the PDB file? In my case, the breakpoints will be ignored in PB during the debug session.

A: Harald, just as a sanity check, you're able to set breakpoints in other modules, correct?

Travis Hobrla [MS] (Expert)[18:24]:

Q: [2] I have a problem with bad blocks in NAND Flash. My FMD driver implements the method FMD_WriteSector and return false if something goes wrong. Does the FAL automatically mark the block like bad block ? I'm using Windows CE 5.0.

A: The FAL doesn't mark the HW bad, but it should track that a block has become unusable. There is a bug around omitting blocks from the usable range in CE5. A QFE has been released or will be shortly (not sure whether it will be in the August or September 2009 drop).

RajeevDubey[MS] (Expert)[18:24]:

Q: [10] Re Bluetooth HDP, yes, I am not asking for HDP support, I think we or others could do that, but with out the CSA 1 support in the CORE, HDP cannot be implemented.

A: Hi Len, we do support BT stack to be extended by OEMs. If you have questions on extending stack to add CSA1 support since we do not have that in CE, please send me an email and we can discuss the solution.

RajeevDubey[MS] (Expert)[18:25]:

Q: [12] Note that Bluetooth CSA1 adds some functionality to L2CAP

A: We do support stack extensions by OEMs. Let me know via email what extensiosn you need at L2CAP.

Sing Wee [MS] (Expert)[18:28]:

Q: [11] Would the Experts like to share any blogs they may write for?

A: There are also very informative blog posts archived on the following blog (although it has been quiet for some months now): http://blogs.msdn.com/ce_base/

Travis Hobrla [MS] (Expert)[18:28]:

Q: [6] What are the causes of KITL timeout error in Platform Builder ?

A: Generally this is because your KITL driver is hanging. Possible causes are a failure in the KITL driver, a failure in the network hardware, an interrupt storm on the device that prevents your KITL ISR from executing, or a very high priority thread that is starving the KITL thread. I would recommend connecting a serial cable to see what output you get, and then try running KITL in polling mode to see if the failure still occurs in an effort to narrow down the cause to one of the things I mentioned.

Sue Loh [MS] (Expert)[18:31]:

Q: [11] Would the Experts like to share any blogs they may write for?

A: I wrote a lot on http://blogs.msdn.com/ce_base/ but haven't done so for a while. :-(

Travis Hobrla [MS] (Expert)[18:32]:

Q: [16] Thanks Travis....so...if FMD_WirteSector() return false, doens't FAL invoke FAL_SetBlockStatus() passing parameter BAD_BLOCK and mark it as bad block ? In this way, some application can reuse this block ???

A: If WriteSector fails, FAL will try to compact the block, only setting the status to BAD if EraseBlock fails and FMD_GetBlockStatus returns BAD. So if EraseBlock succeeds the application can reuse it. However, the bug I'm referring to allows blocks that are suspected to be bad to be reused, because the FAL fails to properly omit them. That bug is goign to be fixed in the QFE.

Sue Loh [MS] (Expert)[18:32]:

Q: [3] Hello, I'm using Windows CE 5.0 and have question about application debugging with PB. Are there any limitations about the size of the PDB file? In my case, the breakpoints will be ignored in PB during the debug session.

A: PDBs can be really large - that shouldn't be a limitation. Have you sanity-checked steps like I posted in http://blogs.msdn.com/ce_base/archive/2005/11/30/tips-for-using-breakpoints.aspx?

Sue Loh [MS] (Expert)[18:33]:

Q: [13, 14] Thanks Vadim, I mean I have 4 regions set in the storage manager. 2 are normal FILESYS regions, and 2 are protected. It is like this from the start to end [NK,FILESYS,BOOTL,HIVE]. Previously, I´ve used 2 fal fmd drivers for FILESYS and HIVE, protecting...
..manually the NK and BOOTL area. Now I want to tell the MDD that it can use the FILESYS and HIVE areas, in only one driver. (Note that the bootloader is in the middle of it)

A: Vadim YushprakhI am sorry that the concept of Regions is not better explained on MSDN. We're actually refering to a type of flash device which has multiple flash parts under one controller; where each flash part is a different region. What Marcelovk needs is partitions. Now it is possible to write a flash PDD that takes a single flash part and reports it up to the MDD as consisting of multiple regions; although that's not the common scenario. If that is what he is doing in the PDD, then the PDD must support the IOCTL_FLASH_PDD_GET_REGION_COUNT command, as well as IOCTL_FLASH_PDD_GET_REGION_INFO
the IOCTL_FLASH_PDD_GET_REGION_INFO command must return a structure that contains the same number of regions as reported by the COUNT command
In order for the MDD to be able to manage each regions, there are certain minimums that each region's geometry must meet
There is a minimum number of blocks (not sure of the value). The sector size must be a power of two. Each sector (flash page) must be at least 512 bytes;

masatos_MSFT (Expert)[18:33]:

Q: [15] We have noticed that when running a bigger CF application the notifyDB of WindowsCE6.0 will increase every time the system is rebooted. One entry will always be duplicated. This causes that Active Sync is not running anymore (->too many entries).

A: Thanks mkiepfer for summarizing your question. Looking for an expert who can help you with this

msft_davbo (Moderator)[18:33]:

Q: [11] Would the Experts like to share any blogs they may write for?

A: http://www.microsoft.com/windowsembedded/en-us/com munity/development.mspx - Several Blog links for Embedded

Sue Loh [MS] (Expert)[18:34]: Oops let me re-post that better formatted

kurtken_ms (Expert)[18:34]:

Q: [17] How can I set KITL in polling mode ?

A: usually there is an option in the bootloader that lets you set a flag that tells kitl to run in polling mode.

Travis Hobrla [MS] (Expert)[18:34]:

Q: [17] How can I set KITL in polling mode ?

A: Assuming you're using CE5.0 and oal_kitl.lib, you can pass the flag OAL_KITL_FLAGS_POLL in the OAL_KITL_ARGS.flags to OalKitlInit().

kurtken_ms (Expert)[18:35]:

Q: [17] How can I set KITL in polling mode ?

A: You can also set the SYSINTR kitl should use to 0 and that should make it use polling.

Sue Loh [MS] (Expert)[18:35]:

Q: [13, 14] Thanks Vadim, I mean I have 4 regions set in the storage manager. 2 are normal FILESYS regions, and 2 are protected. It is like this from the start to end [NK,FILESYS,BOOTL,HIVE]. Previously, I´ve used 2 fal fmd drivers for FILESYS and HIVE, protecting...
..manually the NK and BOOTL area. Now I want to tell the MDD that it can use the FILESYS and HIVE areas, in only one driver. (Note that the bootloader is in the middle of it)

A: [Vadim Yushprakh]
I am sorry that the concept of Regions is not better explained on MSDN. We're actually refering to a type of flash device which has multiple flash parts under one controller; where each flash part is a different region. What Marcelovk needs is partitions. Now it is possible to write a flash PDD that takes a single flash part and reports it up to the MDD as consisting of multiple regions; although that's not the common scenario. If that is what he is doing in the PDD, then the PDD must support the IOCTL_FLASH_PDD_GET_REGION_COUNT command, as well as IOCTL_FLASH_PDD_GET_REGION_INFO. The IOCTL_FLASH_PDD_GET_REGION_INFO command must return a structure that contains the same number of regions as reported by the COUNT command. In order for the MDD to be able to manage each regions, there are certain minimums that each region's geometry must meet. There is a minimum number of blocks (not sure of the value). The sector size must be a power of two.

Sue Loh [MS] (Expert)[18:36]:

Q: [13, 14] Thanks Vadim, I mean I have 4 regions set in the storage manager. 2 are normal FILESYS regions, and 2 are protected. It is like this from the start to end [NK,FILESYS,BOOTL,HIVE]. Previously, I´ve used 2 fal fmd drivers for FILESYS and HIVE, protecting...
..manually the NK and BOOTL area. Now I want to tell the MDD that it can use the FILESYS and HIVE areas, in only one driver. (Note that the bootloader is in the middle of it)

A: [Vadim, continued]
Each sector (flash page) must be at least 512 bytes; and we need at least 6 bytes of spare area per sector
Sue, if you'd like, you could give the customer my email, and they coudl contact me directly. This could become a deep discussion =)

mskim_MSFT (Expert)[18:37]:

Q: [4] Which Compact Framework version is in ROM on Windows Mobile 6.5 devices?

A: On my WM 6.5 phone, I have .NET CF 3.5.9198.0 but this can be changed by OEM. You can check the version of .NET CF by running Windows\cgacutil.exe.

chienher [MS] (Expert)[18:38]:

Q: [9] huger CF application. The problem then is that in most cases active sync is not running anymore. We assume that it takes to long to find the replog.exe entry within the norify db. Cleaning up the regsitry will reset the notifyDB and get the system back.

A: From what you've described looks like the "DB_Notify_Events" database has been messed up at run time. At normal situation, the AppRunAtRs232Detect event for repllog was setup within initdb.ini of your image, so at boot up time filesys will re-load it. You could use the DB api to enum the DB record from "DB_Notify_Events" and see how many records within it, does it have Record :
Field : 0001001f : "repllog.exe"
Field : 0002001f : "AppRunAtRs232Detect"
Field : 00030013 : 9
End

kurtken_ms (Expert)[18:39]:

Q: [18] So...if FMD_WriteSector() fails, FAL will try to compact the block. Waht is the function it invokes on the FMD driver ? If the compact fails, the FAL mark the block as bad ? A block is marked bad only when the erase fails ?

A: If FMD_WriteSector fails then the block should be marked bad internally in the FAL, and other sectors in the same block should be moved by the FAL to another block. As soon as FMD_WriteSector fails the FMD should mark the block as bad.

Travis Hobrla [MS] (Expert)[18:41]:

Q: [18] So...if FMD_WriteSector() fails, FAL will try to compact the block. Waht is the function it invokes on the FMD driver ? If the compact fails, the FAL mark the block as bad ? A block is marked bad only when the erase fails ?

A: compaction involves calls to FMD_ReadSector, FMD_WriteSector, and FMD_EraseBlock. We'll only mark the block unusable to the FAL if EraseBlock fails. Of course, if the driver returns BLOCK_STATUS_BAD from GetBlockStatus we wil not use it, also.

Sue Loh [MS] (Expert)[18:42]:

Q: [19] Thanks I see. I did not want to have partitions, because the bootloader is a critical area. If I have partitons, then they will be accessible from the Storage Manager, then I can render my board unbootable, right ?

A: Since you have a lot of questions, Vadim suggests that you take this onto email with him. I've already sent you his address, but feel free to contact me too if you have any problems reaching him.

chienher [MS] (Expert)[18:43]:

Q: [15] We have noticed that when running a bigger CF application the notifyDB of WindowsCE6.0 will increase every time the system is rebooted. One entry will always be duplicated. This causes that Active Sync is not running anymore (->too many entries).

A: You will need to find out which .NET app cause the "DB_Notify_Events" database to increase and fix from it.

chienher [MS] (Expert)[18:44]:

Q: [8] available after rebooting the board. I already have asked a question some time ago, but meanwhile there are a lot of applications running into this problem. We can not find any reason for that behaviour, yet, but it only seems to occur when running a

A: see previous

chienher [MS] (Expert)[18:44]:

Q: [7] We have noticed that the Notify-DB be packed with some new entries, when running a .NET application on WindowsCE 6.0. In this case one entry already available in this database will be duplicated. The curious about this is that the duplicate entry is only

A: see previous

chienher [MS] (Expert)[18:45]:

Q: [20] Q9: The problem that repllog.exe will not started anymore seems to be that there really a lot of duplicated entries available in the notifDB. Every time the board is rebootet one entry gets duplicated.

A: Yes. notify db doesn't prevent the dup and it is by design of CE6, and the root cause is why the application contonue to create the new record.

Sue Loh [MS] (Expert)[18:47]:

Q: [22] Do you have any news about strategy, how to share compiler fixes between PB QFEs and VS (I asked this last time)?

A: Let me re-state the question to make sure I understood: We released a compiler fix in a PB QFE and you want to know how to use this with an app project in VS. Is that right?

Travis Hobrla [MS] (Expert)[18:49]:

Q: [21] excuse me but I have a different answer from kurtken and Travis ... I don't understand if a block is marked bad by FAL or not....kurtken said yes "If FMD_WriteSector fails then the block should be marked bad internally in the FAL"....and Travis said no.

A: The bug that is being QFE'd is the FAL *should* mark the sectors unusable internally, but it fails to do so.

RajeevDubey[MS] (Expert)[18:50]:

Q: [24] Rajeev asked me to email him, but Idon't have his email address, could someone send it to len at socketmobile.com?

A: My email address - rajeevdu@microsoft.com

Sue Loh [MS] (Expert)[18:50]:

Q: [22] Do you have any news about strategy, how to share compiler fixes between PB QFEs and VS (I asked this last time)?

A: The compilers that you use when you build an application in VS are installed with the SDK. So you would have to replace the compilers in the SDK install... Probably c:\program files\windows ce tools\<SDK name>

Sue Loh [MS] (Expert)[18:52]:

Q: [22] Do you have any news about strategy, how to share compiler fixes between PB QFEs and VS (I asked this last time)?

A: (continued) However I'm not sure how well that would work. I am guessing there is at least some level of tying between compiler versions and things like headers. If the new compiler is from the same CE OS version as the SDK, just different by a QFE, it might work to replace it. If the new compiler is from a different CE OS version, you might find problems when you try to compile.

chienher [MS] (Expert)[18:53]:

Q: [23] Q15: Do you have any hint how to detect which app could cause this behaviour? As far as I know there is now obvious acces to the notifyDB within this application. We meanwhile have some customers, running different applications and all having the same prob

A: Try WM_DBNOTIFICATION and see which application is modifing the nitify DB.

Sue Loh [MS] (Expert)[18:55]: Sorry hhhh, we're only experts in Windows CE / Mobile, not word


If you still have unanswered questions, let me suggest that you post them on one of our newsgroups, such as Microsoft.public.windowsce.platbuilder.



So long and thanks for all the fish!

2 comments:

Anonymous said...

Bundle of thanks for Sharing these precious FAQs!
Experts Chat

Damian Barnett said...

A pleasure! Good to hear that it's usefull.

Cheers!
Damian